【Python算法】三种斐波那契数列算法
2021-05-04 04:29
                         标签:黄金   定义   python算法   问题   个数   初始   生成   for   return    斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=0,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*   本文章要解决的问题是: 根据通项公式递归求值,此种方法虽代码简洁却效率太低   由于递归自顶向下的方式效率太低,我们采用自底向上的方式,先将数值正向放入列表中,最后从列表中取值。   随便给定一个数字,求不大于此数值的斐波那契数列     【Python算法】三种斐波那契数列算法 标签:黄金   定义   python算法   问题   个数   初始   生成   for   return    原文地址:https://www.cnblogs.com/waterr/p/13195852.html1、求第n项斐波那契数列的值是多少(普通版)
1 def Fibonacci(n):
2     if n == 1:  # 如果n=1,返回0
3         return 0
4     elif n == 2:  # 如果n=2,返回1
5         return 1
6     else:
7         return Fibonacci(n-1) + Fibonacci(n-2)  # 通项公式 F(N) = F(N-1) + F(N-2)
2、求第n项斐波那契数列的值是多少(快速版)
 1 def Fibonaccii(n):
 2     seq = [0,1]  # 初始列表怕[0,1]
 3     if n == 1:  # 如果n=1,返回[0]
 4         return [0]
 5     elif n == 2:  # 如果n=2,返回[0,1]
 6         return [0,1]
 7     else:
 8         for i in range(n-2):  # 循环往列表中添加数列,初始已有两项故添加项数为n-2
 9             seq.append(seq[i]+seq[i+1])  # 添加的数列值等于前两项的和
10         return seq[-1]  # 取最后一项的值
3、给定终止值,生成此前斐波那契数列
def Fibonacciii(n):
    seq = [0,1]  # 初始化列表
    i = 0  # 初始i
    if n == 0:  # 如果n=0,返回列表[0]
        return [0]
    else:
        if n # 如果0
4、求前n项斐波那契数列
 1 def Fibonaccii(n):
 2     seq = [0,1]  # 初始化列表
 3     if n == 1:  # n=1,返回[0] 
 4         return [0]
 5     elif n == 2:  # n=2,返回[0,1]
 6         return [0,1]
 7     else:
 8         for i in range(n-2): # n>2,循环添加数列到初始列表中
 9             seq.append(seq[i]+seq[i+1])
10         return seq 
上一篇:springcloud 注解错误
下一篇:数据结构与算法