13.算法进阶之路径规划(斐波那契数列求解、钢条切割问题和最长公共序列)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值