美文网首页我的Python自学之路
斐波那契数列与 python 的多种实现

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

作者: 除囧 | 来源:发表于2017-03-16 23:01 被阅读0次

斐波那契数列

费波那契数列由 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.

相关文章

网友评论

    本文标题:斐波那契数列与 python 的多种实现

    本文链接:https://www.haomeiwen.com/subject/jmlsnttx.html