递归练习题

#1 1 2 3 5 8 13 21 34 55 斐波拉切  效率慢 2次递归调用
def fib(n):
    if n==2 or n==1:
        return 1
    else:
        return fib(n-1)+fib(n-2)

print(fib(10))





#1 1 2 3 5 8 13 21 34 55 斐波拉切 提高效率解法
def dib(x):
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1) 
        return n,m+n
print(dib(10))

# 第一次
def dib(x):  #10
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1) # dib(9)接收 21,34
        return n,m+n#返回34,55
print(dib(10))
#第二次
def dib(x):#9
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1)## dib(8) #接收13,21
        return n,m+n#返回 21,34
print(dib(10))
#第三次
def dib(x):#8
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1)## dib(7)接收8,13
        return n,m+n#返回 13,21
print(dib(10))
#第四次
def dib(x): #7
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1)## dib(6) 接收5,8
        return n,m+n #返回8,13
print(dib(10))
#第五次
def dib(x):#6
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1)## dib(5) 接收3,5
        return n,m+n  #返回5,8
print(dib(10))
#第六次
def dib(x):#5
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1)## dib(4) 接收2,3
        return n,m+n #返回 3,5
print(dib(10))
#第七次
def dib(x):#4
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1)## dib(3)接收 1,2
        return n,m+n#返回 2,3
print(dib(10))
#第八次
def dib(x):#3
    if x==1 or x==2:
        return 1,1
    else:
        m,n=dib(x-1)## dib(2)  #接收1,1
        return n,m+n  # 返回1,2
print(dib(10))
#第九次
def dib(x):#2
    if x==1 or x==2:
        return 1,1 #返回 1,1
    else:
        m,n=dib(x-1)##
        return n,m+n
print(dib(10))
#阶乘
def f(s):
    if s==1:
        return 1
    else:
        return f(s-1)*s


print(f(5))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值