python-函数-递归-斐波那契数列

对于斐波那契数列,fibo(n)=fibo(n-1)+fibo(n-2)
以下是斐波那契数列的两种写法

递归实现

def fibo(n): 
    if n<=0:
        return 0
    elif n==1:
        return 1
    else:
        return fibo(n-1)+fibo(n-2)

#相对于第一种写法,代码长了一些,但是递归次数少了许多
如果n为30左右的时候代码1执行时间比代码2执行时间长很多
动态规划实现

def Fibo(n):
    #创建一个长度为n+1的列表来记录斐波那契数列的每一个值
    sum_list=[0]*(n+1)
    def fibo(sum_list,n):
        #如果所求值存在于列表中,省去递归直接进行计算
        if sum_list[n]!=0:
            return sum_list[n]
        #利用递归
        if n<=2:
            sum_list[n]=1
        else:
            sum_list[n]= fibo(sum_list,n-1)+fibo(sum_list,n-2)
        return sum_list[n]
    return fibo(sum_list,n)

你可能感兴趣的:(python)