我使用的是 python 版本 3.4.1,当我运行代码时:
def fibo(n):
if n == 1 or n ==2:
return 1
else:
return fibo(n-1)+fibo(n-2)
print("input number for fibonacci seq list")
num = int(input())
for i in range(0,num):
print(str(fibo(i)))
我希望代码为我提供用户输入的斐波那契数列,但我收到标题中提到的错误。我不知道为什么。
最佳答案
I am not sure why.
让我解释一下发生了什么。
在这部分:
for i in range(0,num):
print(str(fibo(i)))
第一个数字i
传递至fibo
是 0
因为range(0,num)
从 0
开始。里面fibo
, 0
失败 n == 1 or n ==2
条件,所以fibo(n-1)
被执行。现在号码是-1
因为0 - 1 == -1
。这个数字也不符合 n == 1 or n ==2
状况和fibo(n-1)
再次被执行。现在号码是-2
.
希望您能明白这是怎么回事。该数字无限减少,直到 fibo
达到 Python 的最大递归深度,从而引发错误。
关于python - 斐波那契错误: maximum recursion depth exceeded in comparison,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534582/