【问题标题】:fibonacci doesn't output 0斐波那契不输出 0
【发布时间】:2019-11-03 10:54:53
【问题描述】:

我写了一个简短的代码,它输出斐波那契数列的前 n 个数字,其中 n 是传递参数的值,每个数字都打印在新行中。 我的问题是输出不是从 0 开始,而是从 1 开始。如何在输出中也得到 0?

def fibonacci(n):
    fib1 = 0
    fib2 = 1
    for x in range(0,n):
        print("%d\n" %(fib2), end = " ")
        next = fib1 + fib2 
        fib1 = fib2
        fib2 = next

所以这是输出,为什么第一个移入之后的数字? output

【问题讨论】:

  • 您可以明确检查n==0 并单独打印,这是一种选择。
  • 在进入循环之前单独打印fib1。

标签: python fibonacci


【解决方案1】:
def fibonacci(n):
    fib1 = 0
    fib2 = 1
    for x in range(0,n):
        print("%d\n" %(fib1), end = " ")
        next = fib1 + fib2 
        fib1 = fib2
        fib2 = next

line #5 处简单打印fib1 而不是fib2 如果您打印fib2,即1,您如何期望在开始时输出0

【讨论】:

  • 谢谢你,愚蠢的错误!大声笑但是另一个问题:为什么我的输出在它们之间直接写入 0 和 1,但后面的所有数字都移入了?
【解决方案2】:

你可以使用:

def fibonacci(n):
    fib1 = 0
    fib2 = 1
    for x in range(0, n):
        print("%d" %(fib1))
        fib1, fib2 = fib2, fib1 + fib2

或者,您可以只切换 fib1fib2 的值,而不会再弄乱您的代码。

【讨论】:

    【解决方案3】:

    正如在其他示例中提到的那样,您可以解决您的问题 .. 我正在分享更多的方法来做到这一点.. 更短的代码

     def fibonacci_fun(n):
      a, b = 0, 1
      for x in range(2, n):
        print('%s' % a)
        a, b = b, a+b
    
     fibonacci_fun(n)
    

    使用while循环的另一种方式

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

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 1970-01-01
      • 2017-05-15
      • 2012-12-29
      • 1970-01-01
      • 2013-10-20
      • 2015-06-05
      • 2014-05-23
      • 2013-08-09
      相关资源
      最近更新 更多