gpt4 book ai didi

Python 递归错误 : RecursionError: maximum recursion depth exceeded while calling a Python object

转载 作者:行者123 更新时间:2023-12-04 10:24:40 25 4
gpt4 key购买 nike

我正在尝试构建一个函数,该函数将接收一个数字,然后使用递归打印出一个斐波那契数列并在该数上结束该序列。所以如果我有一个从 0 开始的序列和 1如果用户输入是 4它将返回 0 , 1 , 1 , 2 , 3 .我收到这个 RecursionError :

RecursionError: maximum recursion depth exceeded while calling a Python object

这是我的代码:
num = input("Give me a number.")
def fib(n):
n = int(n)
if n == 0:
return 1
return fib(n - 1) + fib(n - 2)
print(fib(num))

最佳答案

两个问题

您的代码有两个问题:

  • 有一个无限循环,它生成 RecursionError异常(exception)
  • 无法检索序列的所有术语(您说要打印所有序列,而不仅仅是最后一个术语)

  • 无限循环

    试试下面的代码。我刚刚添加了 n==1作为另一个停止条件。

    def fib(n):
    n = int(n)
    if n == 0 or n == 1: # Changed here
    return 1
    return fib(n - 1) + fib(n - 2)

    num = input("Give me a number: ")

    print(fib(num))

    案例 f(1)=1根据定义是必需的(请参阅 here )。
    或者只是调试你的代码,你会意识到循环永远不会结束 fib(1)因为它返回: f(1-1) + f(1-2) >>> f(0) + f(-1) >>> 1 + infinite loop .

    打印所有条款

    您可以尝试在递归代码中使用列表,这很棘手,或者可能更改为带有循环的版本。

    带循环:

    # A version using a while loop
    # This code returns the list of terms
    def fib(n):

    n=int(n)
    terms = []

    i=0
    while i<=n:
    if i==0 or i==1:
    terms.append(1)
    else:
    terms.append(terms[-2]+terms[-1])
    i+=1

    return terms

    递归:

    Working on it

    尝试所有这些示例 here .

    关于Python 递归错误 : RecursionError: maximum recursion depth exceeded while calling a Python object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60673175/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com