[英]Fibonacci sequence recursive method
def fib(x, y, length, fibNum=None):
if fibNum == None:
fibNum = []
while length > 0:
z = x+y
x = y
y = z
fibNum.append(z)
length = length-1
fib(x, y, length, fibNum=fibNum)
print(fib(0,1,10))
如果我打印它,我会得到结果 = 无。 有谁知道,错误是什么?
实现fib
一种方法是作为递归 lambda 函数,通过遵循其数学定义,然后您可以创建一个包装函数,该函数生成从x
到y
的斐波那契数列的列表。 (例如, x = 0, y = 10
列出前10
斐波那契数列)。 最后,可以打印此函数的结果。
fib = lambda n: n if n <= 1 else fib(n-1) + fib(n-2)
此 lambda 等效于以下fib
函数:
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
def fib_wrapper(x, y):
return [fib(i) for i in range(x, y)]
print(fib_wrapper(0, 10))
输出:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
正如评论所说,你没有返回任何东西。 如果你只想要 Fibounachis ,那么试试这个:
def fib(k):
fib = []
if k == 1:
fib.append(1)
elif k == 2:
fib.append(1)
fib.append(1)
elif k == 3:
fib.append(1)
fib.append(1)
fib.append(2)
else:
fib.append(1)
fib.append(1)
fib.append(2)
while(fib[-1] <= k):
fib.append(fib[-1] + fib[-2])
return fib
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.