【问题标题】:Python function keeps reiterating raw input question in command linePython函数不断在命令行中重复原始输入问题
【发布时间】:2019-08-04 15:50:05
【问题描述】:

我正在尝试编写一个斐波那契数列,它可以将用户的输入作为兔子世代增长的乘数,即每对成熟兔子产生 4 对后代。

我尝试将输入的整数形式存储在一个新变量中,并在询问原始输入时的位置移动:

def fibonacci(x):
    if x == 1:
        rabbit_pairs = 1
        return rabbit_pairs
    elif x == 2:
        rabbit_pairs = 1
        return rabbit_pairs
    elif x > 2:
        y = int(input("How many offspring per pair? ")) 
        rabbit_pairs = fibonacci(x-1) + (y * fibonacci(x-2))
        return rabbit_pairs

当我运行我的代码时,如果 x > 2,我的输入问题被问到,但它一直被问到,而不是返回相应数量的兔子。如果 x == 5,则命令提示输入每对兔子的数量,然后继续询问每对兔子的数量。

【问题讨论】:

  • 只要尝试在你的脑海中执行给定的代码,你就会知道确切的问题。您在函数中获得输入并一次又一次地调用该函数。
  • y = int(input("每对有多少后代?")) 每次函数调用都会执行此行。您需要将其替换到正确的位置

标签: python iteration fibonacci raw-input


【解决方案1】:

根据您的代码,您递归调用 x > 2 的斐波那契, 所以当你通过 x == 5 时, 函数调用是,

斐波那契(x-1) + (y * 斐波那契(x-2))

fibonacci(4) + (5 * fibonacci(3))
In this case fibonacci(4) and fibonacci(3), x > 2  

所以下面的语句会一直执行到 x

y = int(input("How many offspring per pair? ")) 

理想情况下,您应该将此问题放在递归函数之外,并将值传递给您 fibonacci(x)

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 2014-03-29
    • 2013-03-29
    • 1970-01-01
    • 2014-04-20
    • 2013-12-12
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多