《中学生可以这样学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
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐