zoukankan      html  css  js  c++  java
  • 分别用的列表,递归,生成器三种方式创建出n个元素的斐波那契数列(Python3实现)

    费波那契数列意大利语:Successione di Fibonacci),又译为费波拿契数斐波那契数列费氏数列黄金分割数列

    数学上,费波那契数列是以递归的方法来定义:

    • {displaystyle F_{0}=0}F_{0}=0
    • {displaystyle F_{1}=1}F_{1}=1
    • {displaystyle F_{n}=F_{n-1}+F_{n-2}}F_{n}=F_{{n-1}}+F_{{n-2}}(n≧2)

    用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。首几个费波那契系数是:

    01123581321345589144233……(OEIS中的数列A000045

    特别指出0不是第一项,而是第零项。

     1 #!/usr/bin/python3
     2 #_*_coding:utf-8_*_
     3 
     4 #非递归的方式生成长度为n的斐波那契数列
     5 def createFib1 (n) :
     6     L = [0] ;
     7     i , a , b = 0 , 0 , 1 ;
     8     while i < n :
     9         L.append (b) ;
    10         a , b = b , a + b ;
    11         i = i + 1 ;
    12     return L ;
    13 
    14 #递归的方式生成斐波那契数列中的第n个元素
    15 def fib2 (n) :
    16     if n <= 0 :
    17         return 0 ;
    18     elif n <= 2 :
    19         return 1 ;
    20     else :
    21         return fib2(n-1) + fib2(n-2)
    22 
    23 #调用递归函数生成斐波那契数列
    24 def createFib2 (n) :
    25     L = [] ;
    26     i = 0 ;
    27     while i <= n :
    28         L.append (fib2(i)) ;
    29         i = i + 1 ;
    30     return L ;
    31 
    32 #generator的方法逐个生成斐波那契数列中的元素
    33 def fib3 (n) :
    34     yield 0 ;
    35     i , a , b = 0 , 0 , 1 ;
    36     while i < n :
    37         yield b ;
    38         a , b = b , a + b ;
    39         i = i + 1 ;
    40 
    41 #调用生成器函数生成斐波那契数列
    42 def createFib3 (n) :
    43     L = [] ;
    44     for i in fib3(n) :
    45         L.append (i) ;
    46     return L ;
    47 
    48 #主函数
    49 def main () :
    50     n = int(input("生成长度为n的斐波那契数列:")) ;
    51     print ("fib1:") ;
    52     print (createFib1(n)) ;
    53     print ("fib2:") ;
    54     print (createFib2(n)) ;
    55     print ("fib3:") ;
    56     print (createFib3(n)) ;
    57 
    58 if __name__ == '__main__' :
    59     main()
  • 相关阅读:
    Tomcat造成404
    ajax缺少@ResponseBody注解前台404,业务可以运行
    几种常见的Runtime Exception
    SQL注入通俗讲解
    MYSQL数据库导入大数据量sql文件失败的解决方案
    css选择器
    http端口
    基础算法之最大子列求和问题
    基础算法之链表逆序
    Prolog&Epilog
  • 原文地址:https://www.cnblogs.com/maoguy/p/6629651.html
Copyright © 2011-2022 走看看