算法导论·第七集:斐波那契数列(Python版)

版权声明:本文为博主原创文章,未经博主允许不得转载。若有任何问题,请联系QQ:575925154(加好友时,请备注:CSDN) https://blog.csdn.net/Miracle0_0/article/details/82699794
"""
斐波那契数列
解法:
Fibonacci是1200年代的欧洲数学家。
例如:1、1、2、3、5、8、13、21、34、……
F(n) = F(n-1)+F(n-2) if n>1
F(n) = 1  if n = 0 or 1
"""
#迭代算法
def fibonacci_iter(n):
    if n > 0:
        fib = [1,1]
        for i in range(2,n):
            fib.append(fib[i-1]+fib[i-2])
        print(fib)
    else:
        print("Cannot be calculated correctly.")
    
#递归·非优化算法
def fibonacci_recu(n):
    if n == 1 or n == 2:
        return 1
    elif n > 2:
        return fibonacci_recu(n-1)+fibonacci_recu(n-2)

#递归·优化算法
def fibonacci_recu_opt(n,a = 1,b = 1):
    if n > 2:
        return fibonacci_recu_opt(n-1,a+b,a)
    return a
 
if __name__ == "__main__":
    fibonacci_iter(10)
    val1 = fibonacci_recu(10)
    print(val1)
    val2 = fibonacci_recu_opt(10)
    print(val2)
"""
运行结果:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
55
55
""" 

 

猜你喜欢

转载自blog.csdn.net/Miracle0_0/article/details/82699794