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