【问题标题】:Simple Fibonacci sequence not ouputting correct answer in Python简单的斐波那契数列未在 Python 中输出正确答案
【发布时间】:2014-10-20 18:16:19
【问题描述】:

这是一个非常简单的脚本,但是当你用任何数字调用函数时,结果是错误的。

def fib(n):
     a=0
     b=1
     while a < n:
         a, b = b, a+b
     print(a)

fib(10) = 13。这是错误的。

【问题讨论】:

  • 您的函数返回斐波那契数列中大于或等于 n 的第一个值。

标签: python while-loop fibonacci


【解决方案1】:
def fib(n):
     a=0
     b=1
     i=1
     while i < n:
        a, b = b, a+b
        i+=1
     print(b)

试试这个^^

你不能使用 a,因为 a 不是线性上升的,它会根据你当前的斐波那契计算状态而上升......所以你需要一个额外的计数器来计算你的步数

【讨论】:

  • 谢谢。我仍然不太明白为什么我的代码不起作用。
  • 当您执行斐波那契数列并给出假设 10 时,您必须在计算中迭代 10 次才能获得正确的值...但是您使用 a 作为步进器,但实际上 a 是像 0,1,1,2,3,5,8,13 一样上升,因为它在您的计算中使用...基于斐波那契数列的上升,而不是基于您需要采取的步骤,即问题:) 你只需要一个额外的变量来计算你的步数(因为你需要 10 个)
  • 请考虑在 range(n) 上使用 for 循环,而不是手动递增 i
  • 是的,你是对的,我必须承认我不是 pyhton 专家
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 2013-02-24
  • 2017-05-15
  • 1970-01-01
  • 2021-05-17
  • 2018-06-23
  • 2014-05-23
相关资源
最近更新 更多