20 递归算法实操
奇妙的想法更需要反复练习
大纲
练习:斐波那契数列
练习:青蛙跳台阶
练习:兔子繁殖问题
练习:斐波那契数列
斐波那契数列是指这项数字等于前面两项数字之和的序列
1、1、2、3、5、8、13、21、34、……
让我们用递归算法来实现一下,如何计算出数列的第N项
如果要算出所有的数字,可以直接用列表解析。
练习:青蛙跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
每次跳的时候,小青蛙可以跳一个台阶,也可以跳两个台阶,也就是说,每次跳的时候,小青蛙有两种跳法。第一种跳法:第一次我跳了一个台阶,那么还剩下n-1个台阶还没跳,剩下的n-1个台阶的跳法有f(n-1)种。第二种跳法:第一次跳了两个台阶,那么还剩下n-2个台阶还没,剩下的n-2个台阶的跳法有f(n-2)种。所以,小青蛙的全部跳法就是这两种跳法之和了,即 f(n) = f(n-1) + f(n-2)。
练习:兔子繁殖问题
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
第n月的时候的兔子包括两种,一种是当前新生的兔子,另一种是以前的老兔子,新兔子的数量等于两个月前的老兔子数量,以前的老兔子数量就是一个月前的老兔子数量,所以F(n) = F(n-1)+F(n-2)
假设兔子寿命是8个月,1月出生的兔子到了9月就会死亡,那么上面这个问题里,到了两年后兔子总数会是多少?
第n月的时候的兔子数量除了新兔子和老兔子,还要考虑8个月前的兔子,所以F(n) = F(n-1)+F(n-2)-F(n-8)
Last updated
Was this helpful?