递归和循环

基本概念

递归 :在一个函数的内部调用这个函数自身

循环 :通过设置计算的初始值及终止条件,在一个范围内重复运算。

通常递归的代码会比较简洁,但效率低,且很多计算都是重复的。

例题

递归和循环的性能区别

面试题10-I“斐波那契数列”

在这里插入图片描述
递归方法的中间结果都重复计算了,所以效率地下。循环方法就很简单, O ( n ) O(n) O(n)

面试题10-II“青蛙跳台阶问题”

在这里插入图片描述
如果要用递归方法,一定要保存中间计算结果,可以用个dictionary,不然就超时了 = =

面试题60“n个骰子的点数”

用递归分析问题并基于循环写代码

面试题14-I"剪绳子"

在这里插入图片描述
这个题就很灵活,不是那种死板的背包问题,而是真的要把问题给分解成子问题,没办法去套用方法。而且这个题很烦啊 = = 长度是2或者3的时候返回的是1跟2,但用于计算更长的长度的时候,2跟3的结果就是2和3。。。。就不用拆分了。。。

另外这个题可以用贪心来做,长度大于5的时候要让3多一点,长度是4的时候要剪成两个2。

贪心我目前感觉就像是在 耍流氓 - - 我看见这个题,我要是能想出来 贪心 什么,我就知道怎么解,要是没发现,就凉了。而且贪心策略也基本上只能是提出个策略然后去证明。。(也许后续学习的过程中还会再来修正,目前就是这么理解的。。。头大 LOL

面试题14-II“剪绳子II”

在这里插入图片描述
啊这。。好像在返回的时候 $ %(1000000007)$ 就行了啊

面试题47“礼物的最大价值”

面试题48“最长不含重复字符的子字符串”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值