def fib(n):
if n == 1 or n == 2:
return 1
return fib(n-1) + fib(n-2)
for i in range(5):
print(fib(i))
我想打印斐波那契序列的前5个结果才能获得
RecursionError:比较超出最大递归深度
我认为每个正面n
退出,print(fib(4))
,print(fib(20))
和print(fib(100))
完美无缺。
我的代码出了什么问题?
答案 0 :(得分:1)
每个正面n都有一个退出。
是的,有。但fib(0)
怎么样?
尝试print(list(range(5)))
答案 1 :(得分:1)
range(5)
从0
开始,因为你没有在函数中检查0,所以递归永远不会结束。
作为旁注,你没有正确计算斐波那契序列,你应该加起来
fib(n-1) + fib(n-2)
试试这个:
def fib(n):
if n <= 2:
return n
return fib(n-1) + fib(n-2)
计算第n个斐波纳契数时通常更好的方法是使用循环,因为如果使用递归,最终会反复计算相同的值。使用循环你可以这样做:
def fibonacci(n):
if n < 2:
return 1
a = 1
fib = 1
for i in range(n-2):
a, fib = fib, a + fib
return fib