1.斐波那契数列(每一个数,等于前两个数之和)
思想:1)递归思想,把每一个数化成前两个数的和,然后依次迭代,但效率极低
2)从前往后,把数列每一项存起来,然后依次取用即可。
# 开发时间: 22:59
#问题:递归子问题重复计算,造成效率低
def fibnacci(n):
if n==1 or n==2:
return 1
else:
return fibnacci(n-1)+fibnacci(n-2)
print(fibnacci(20))
#f(5)=f(4)+f(3)
#f(4)=f(3)+f(2)
#f(3)=f(2)+f(1),求f(5)的f(3)
#f(3)=f(2)+f(1),求f(4)的f(3)
#由上述可知,会出现f(3)重复计算,当n大一些时,计算会比较慢
#动态规划(DP)的思想 = 递推式 + 重复子问题,
def fibnacci_no_rec(n):
f=[0,1,1]
if n<=2:
return f[n]
else:
for i in range(n-2):
num=f[-1]+f[-2]
f.append(num)
return f[n]
print(fibnacci_no_rec(20))
2..钢条切割问题(有一根钢条&#x