• 斐波拉契数列(Fibonacci) 的python实现方式


    第一种:利用for循环

    利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了。。。

    1 >>> fibs = [0,1]
    2 >>> for i in range(8):
    3         fibs.append(fibs[-2] + fibs[-1])
    4 
    5 >>> fibs
    6 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

    或者说输入一个动态的长度:

    1fibs = [0,1]
    2num  = input('How many Fibonacci numbers do you want?')
    3 for i in range(num-2):
    4     fibs.append(fibs[-2] + fibs[-1])
    5     print (fibs)

    第二种:利用函数

      函数1:

    1 >>> def fibs(num):
    2     result = [0,1]
    3     for i in range(num-2):
    4         result.append(result[-2] + result[-1])
    5     return result
    6 
    7 >>> fibs(10)
    8 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

       函数2:

    1 def fibs(n):
    2     a,b = 0,1
    3     while a < n:
    4         print (a)
    5         a,b = b,a+b

     或者是下面这种形式:

    def fibs(max):
        n,a,b = 0,0,1
        while n < max:
            print (a)
            a,b = b,a+b
            n = n + 1
        return 'done'

    增加一个max,就可以使相加的次数与传入的参数max相一致,比如输入10,a+b就会相加10次,然后结束循环。如果不用max的形式,只有一个while a < n ,那么到a < n 的时候就会结束循环,因为a不断的在变成b,所以肯定不是每次有增加1,。 

      函数3:

    1 def fibs(n):
    2     a,b = 0,1
    3     result = []
    4     while a < n :
    5         result.append(b)
    6         a,b = b,a + b
    7     return result

    函数2和函数3差不多,函数2是每增加一个数就打印出来了,函数3是每增加一个数就加到result里面,最后输出result。

      函数4:利用递归 

    1 def fab(n):
    2   if n==1:
    3     return 1
    4   if n==0:
    5     return 0
    6   else:
    7     result=int(fab(n-1))+int(fab(n-2))    
    8     return result

    精简代码后如下:

    1 def fibs(n):
    2     if n == 0 or n == 1:
    3         return 1
    4     else :
    5         return fibs(n-1) + fibs(n-2)

     头一次领略到python代码的简略。。  但是我对递归还有有点晕晕的。。。。。

    测试代码如下:

    1 for i in range(10):
    2   print fibs(i)
      
  • 相关阅读:
    P2813 母舰
    P5367 【模板】康托展开
    P1816 忠诚
    P3865 【模板】ST表
    P1913 L国的战斗之伞兵
    P4939 Agent2
    P1894 [USACO4.2]完美的牛栏The Perfect Stall
    P5017 摆渡车
    P1330 封锁阳光大学
    P5018 对称二叉树
  • 原文地址:https://www.cnblogs.com/nklzj/p/6103117.html
Copyright © 2020-2023  润新知