zoukankan      html  css  js  c++  java
  • 斐波那契数列求解

    斐波那契数列简介

    斐波那契数列是一种常见的数列,其满足下面两个条件

    F0=F1=1

    Fn=Fn-1+Fn-2


    ## 斐波那契数列求解

    使用递归

    def fib1(n):
        if n < 2:
            return 1
        return fib1(n-1) + fib1(n-2)
    
    

    ### 不适用递归 ```python def fib2(n): f1 = f2 = 1 for i in range(1, n): f1, f2 = f2, f1+f2 return f2
    
    <br>
    ## 两种算法比较
    
    使用递归的算法时间O(1.618^n)
    不适用递归的算法O(n)
    ```python
    import time
    
    
    # 使用递归
    def fib1(n):
        if n < 2:
            return 1
        return fib1(n-1) + fib1(n-2)
    
    
    # 不使用递归
    def fib2(n):
        f1 = f2 = 1
        for i in range(1, n):
            f1, f2 = f2, f1+f2
        return f2
    
    
    start_time = time.time()
    print('fib1:', fib1(40))
    end_time = time.time()
    print('fib1:', end_time-start_time)
    
    
    start_time = time.time()
    print('fib2:', fib2(40))
    end_time = time.time()
    print('fib2:', end_time-start_time)
    
    

    运行结果 ```python fib1: 165580141 fib1: 34.63041615486145 fib2: 165580141 fib2: 0.0
  • 相关阅读:
    FZU Monthly-201906 tutorial
    FZU Monthly-201906 获奖名单
    FZU Monthly-201905 tutorial
    BZOJ1009 GT考试
    BZOJ2428 均分数据
    模拟退火
    BZOJ3680 吊打XXX
    BZOJ4818 序列计数
    BZOJ4103 异或运算
    BZOJ3512 DZY Loves Math IV
  • 原文地址:https://www.cnblogs.com/zzliu/p/10691794.html
Copyright © 2011-2022 走看看