【python学习】递推算法案例分析

《中学生可以这样学Python》P180-181

使用递推法计算阶乘

#递推算法分析
## 使用递推法计算阶乘
def fac(n):
    result=1
    for i in range(1,n+1):
        result *= i
    return result
print(fac(6))

使用递推法计算组合数

## 使用递推法计算组合数
def Cni(n,i):
    if not (isinstance(n,int) and isinstance(i,int)) and n>=i:
        print('n和i必须为数字,并且n>=i')
        return
    result =1
    Min,Max=sorted((i,n-i))
    for i in range(n,0,-1):
        if i>Max:
            result *= i
        elif i<=Min:
            result /= i
    return result
print(Cni(8,3))

使用递推算法求解爬楼梯问题

## 使用递推算法求解爬楼梯问题,假设一段楼梯共15个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法
# f(n)=f(n-1)+f(n-2)+f(n-3)
# f(n-1)一种上楼 1
# f(n-1)两种上楼 2;1+1
# f(n-2)四种上楼 1+1+1;1+2;2+1;3
def climbStairs(n):
    a=1
    b=2
    c=4
    for i in range(n-3):
        c,b,a=a+b+c,c,b
    return c
print(climbStairs(15))


结果:

>>> %Run test8.py
720
56.0
5768
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值