【问题标题】:Feeling like a bad learner with Fibonacci sequence感觉像斐波那契数列的糟糕学习者
【发布时间】:2020-09-12 13:40:13
【问题描述】:

我应该首先说我在这方面是个菜鸟。三周前我刚开始学习 Python 3。 我正在使用Codio 并尝试打印从 0 到 21 的斐波那契数列。如果有人可以帮助我找到解决方案,我将不胜感激!我已经被困了一段时间了。

这是我的代码:

import sys

N = int(sys.argv[1])

n1, n2 = 0, 1
while n2 < 22:
    print(n2)
    n1, n2 = n2, n1 + n2

如果有帮助,我正在使用 python3 运行此脚本。提前谢谢你们!我真的不喜欢经常寻求帮助,但我迷路了。我已经重写了几次代码,但仍然出现错误,我只是一个糟糕的初学者吗?

【问题讨论】:

  • 如果您希望从0 to 21 打印代码,请使用n1&lt;22print(n1),而不是检查和打印n2
  • 你是如何运行它的?我输入了python3 x.py 99,它没有抱怨;但是如果我输入python3 x.py,我会抱怨int(sys.argv[1]) 上的索引超出范围,因为我没有提供参数。
  • 你得到哪个错误,你在哪一行得到它?
  • 我收到这个奇怪的错误“程序输入失败:0”,我会继续尝试

标签: python-3.x fibonacci


【解决方案1】:

对于Fibonacci,有一个称为Binet's Formula 的流行公式,该公式表示计算斐波那契直到n 数字。公式为:

所以,利用公式,你可以在这里输入n,这就是结束,在你的情况下:21

import math

def fibonacci(n):
  outer_number = 1 / pow(5, 1/2) 
  first_computation = ((1 + pow(5, 1/2)) / 2)
  second_computation = ((1 - pow(5, 1/2)) / 2)
  
  return outer_number * (pow(first_computation, n) - pow(second_computation, n))
  
print(int(fibonacci(21))) # >>> 10946

【讨论】:

    【解决方案2】:

    斐波那契数列是一个整数序列,其中每个元素都是前两个元素的和。

    我不知道如何使用 python 编写代码,但我确实使用 C# 解决了这个问题:

    static int fibonacci(int n)
        {
            if (n == 1)
            {
                return 0;
            }
            if (n == 2)
            {
                return 1;
            }
            else
            {
                return fibonacci(n - 1) + fibonacci(n - 2);
            }
        }
    

    您可以使用递归函数来解决这个问题。如果请求的序列数是第一个,您可以轻松返回 0,如果是第二个,则返回 1。如果不是,您将返回此函数的结果与前两个数字的总和。假设 n 是请求,那么您需要使用 n - 1 和 n - 2 重新执行此函数,这将创建一个循环,一直持续到 n - 1 = 2 和 n - 2 = 1

    【讨论】:

      【解决方案3】:

      python3中的简单答案如下:

      n0=0
      n1=1
      print(n0)
      print(n1)
      while True:
          n=n0+n1
          n0=n1
          n1=n
          print(n)
          if n>=21:
              break
      

      确保缩进是正确的,因为这是 python 识别语句块结尾的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-05
        • 1970-01-01
        • 1970-01-01
        • 2013-08-03
        • 2014-05-19
        • 2015-08-30
        相关资源
        最近更新 更多