斐波那契数列与 python 的多种实现

斐波那契数列

费波那契数列由 0 和 1 开始,之后的费波那契系数就是由之前的两数相加而得出。
特别指出0 不是第一项,而是第零项。

python 实现

  1. 第一个版本,输入初始值,打印特定项数的斐波那契数列
    def fibonacci(a, b, num):
        if num == 0:
            return str(a) + " "
        if num == 1:
            return str(a) + " " + str(b) + " "
        if num % 2 == 1:
            return str(a) + " " + fibonacci(b, a+b, num-1)
        if num % 2 == 0:
            return str(a) + " " + str(b) + " " + fibonacci(b+a, a+b+b, num-2)
    
    if __name__ == '__main__':
        print fibonacci(0, 1, 9)

输出结果:

0 1 1 2 3 5 8 13 21 34 

这里读者可能会觉得奇怪,参数不是 9 吗,怎么有 10 项呢?
前面已经特别指出,0 不是第一项,而是第 0 项。

  1. 第二个版本,打印特定项数的斐波那契数列
    def fibonacci_v2(num):
        a, b = 0, 1
        if num == a:
            print a,
        elif num == b:
            print a, b,
        count = 0
        while num > count:
            print a, b,
            a, b = a+b, a+b+b
            count += 2
        if num % 2 == 0:
            print a

    if __name__ == '__main__':
        fibonacci_v1(10)    

输出结果:

0 1 1 2 3 5 8 13 21 34 55
  1. 第三个版本,打印特定项的值
  def fibonacci_v3(num):
      if num == 0:
          return 0
      if num == 1:
          return 1
      return fibonacci_v2(num-1) + fibonacci_v2(num-2)

  if __name__ == '__main__':
      print fibonacci_v2(7)

输出结果:

13

感谢阅读!
如果文章中有错误或存在误解的地方,麻烦多加指教,无比感谢!
科技是一把双刃剑,能让世界终结,也能让世界更美好。
The End.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容