有一个众所周知的问题,在这里,要求在短时间内(至少字符)斐波那契序列发生器。
我想知道是否有人可以在非常短的空间内生成斐波那契数列的前N个元素。我正在尝试用python来做,但是我对任何语言的简短回答都感兴趣。函数F(N)生成序列的前N个元素,或者将它们作为函数的返回值返回或打印出来。
有趣的是,似乎代码高尔夫球的答案以开头1 1 2
,而不是0 1 1 2
。这是代码高尔夫球规范还是通用编程规范?(维基百科说斐波那契数列从零开始。)。
Python示例(前5个元素):
def f(i,j,n):
if n>0:
print i;
f(j,i+j,n-1)
f(1,1,5)
F_0 = 0, F_1 = 1
或等效F_1 = 1, F_2 = 1
。区别在于您是要从索引0(在编程中更常见)还是在索引1(在数学中更常见)开始序列。
F_0 = 0, F_1 = 1
使用矩阵表示定义具有明确的好处[[1 1][1 0]]^n = [[F_{n+1} F_n][F_n F_{n-1}]]
。