python - 斐波那契错误: maximum recursion depth exceeded in comparison

标签 python recursion

我使用的是 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传递至fibo0因为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/

相关文章:

c# - 是具有递归的有效通用二叉搜索树

java - 使用递归函数构建 map

python - 如何从 jupyter notebook 运行 tf.test.TestCase - UnrecognizedFlagError : Unknown command line flag 'f'

Python JupyterLab : Stop the execution of a code at a line

分配范围内的 Python 'if' 可以接受吗?

javascript - setInterval() 添加类然后删除类相同的时间

c - 递归斐波那契程序的时间复杂度

python - Python 中的 Flask 多进程工作池

python - 将两个数字的列表转换为数组的索引

c# - 反射:递归地搜索字符串值的对象,然后报告路径