3 回答
TA贡献1998条经验 获得超6个赞
for i in range(n):
return fibonacci(n-1) + fibonacci(n-2)
这个 for 循环是没有意义的,因为你return是第一次迭代。您应该在这里完全摆脱 for 循环。
这也不是您要重复的部分。相反,您想重复该print()语句:
for i in range(n):
print(fibonacci(i)) # You want the i-th fibonacci number
这将为您提供所需的结果,但这是一种非常低效的方法。对于较大的 值n,您将计算第 i 个斐波那契数的指数次数。
TA贡献1827条经验 获得超9个赞
这个怎么样?:
def fib(l,ix):
a = [l[0], l[1]]
for i in range(ix):
b = a[i+1]+a[i]
a.append(b)
return str(a)[1:-1]
第一个参数是斐波那契的前两个数字(即 [0,1])。第二个参数是您想要斐波那契数的数字(即 50)。这给了你类似的东西print(fib([0,1],50))。
TA贡献1818条经验 获得超8个赞
如果您很聪明并且n大于 1,您可能希望以reduce更复杂的方式使用:
from functools import reduce
def fibonacci(n):
return reduce(lambda x,y: x+[x[-1]+x[-2]], [[0,1]]+[[0]]*(n-2))
这就是它的工作原理n=5:
[[0,1], [0], [0], [0]] ->
[[0,1,1], [0], [0]] ->
[[0,1,1,2], [0]] ->
[[0,1,1,2,3]] ->
stops here and returns [0,1,1,2,3]
添加回答
举报