背景
大多数人都熟悉斐波那契数 F(n)
:
0、1、1、2、3、5、8、13、21 ...
这些由F(n) = F(n-1) + F(n-2)
与F(0)=0
和的递归函数形成F(1)=1
。0000
一个密切相关的序列是卢卡斯数 L(m)
:
2、1、3、4、7、11、18、29 ...
这些由L(m) = L(m-1) + L(m-2)
与L(0)=2
和的递归函数形成L(1)=1
。0000
我们可以根据偶数/奇数索引在两个序列之间进行交替,并使用
A(x) = F(x)
if x mod 2 = 0
和A(x) = L(x)
else 的构造。例如,A(4)
等于F(4)
以来4 mod 2 = 0
。我们称这个序列中的卢卡斯- nacci号码,A(x)
:
0、1、1、4、3、11、8、29、21、76 ...
这可以通过递归函数来形成A(x) = 3*A(x-2) - A(x-4)
与A(0)=0
,A(1)=1
,A(2)=1
,和A(3)=4
。005
挑战
给定输入n
,输出n+1
直至和包括A(n)
如上所述的数字序列。最小字节(或等效字节,例如对于LabVIEW,由Meta分别确定)获胜。
输入项
单个非负整数 n
。
输出量
对应于Lucas-nacci数字从A(0)
到的子序列的数字列表A(n)
。如上所述,列表必须按顺序排列。
规则
- 适用标准代码高尔夫球规则和漏洞限制。
- 标准输入/输出规则适用。
- 输入数字可以采用任何合适的格式:一进制或十进制,从STDIN读取,函数或命令行参数等-您可以选择。
- 输出可以打印到STDOUT或作为函数调用的结果返回。如果已打印,则必须包括用于区分数字的合适分隔符(以空格分隔,以逗号分隔等)。
- 另外,如果输出到STDOUT,则周围的空格,结尾的换行符等都是可选的。
- 如果输入是非整数或负整数,则程序可以执行任何操作或不执行任何操作,因为行为未定义。
例子
Input -> Output
0 -> 0
5 -> 0, 1, 1, 4, 3, 11
18 -> 0, 1, 1, 4, 3, 11, 8, 29, 21, 76, 55, 199, 144, 521, 377, 1364, 987, 3571, 2584