题目解析
题目:有一对兔子,从出生后第4个月起每个月都生一对兔子,小兔子长到第4个月后每个月又生一对兔子,假如兔子都不死,问某个月后的兔子总数为多少对?
我先统计一下8个月内兔子的情况,一个月是小兔,两个月中兔,三个月大兔,四个月成兔(开始生兔子),情况如下表:
月份 | 小 | 中 | 大 | 成 | 总数 |
---|---|---|---|---|---|
1 | 1 | 0 | 0 | 0 | 1 |
2 | 0 | 1 | 0 | 0 | 1 |
3 | 0 | 0 | 1 | 0 | 1 |
4 | 1 | 0 | 0 | 1 | 2 |
5 | 1 | 1 | 0 | 1 | 3 |
6 | 1 | 1 | 1 | 1 | 4 |
7 | 2 | 1 | 1 | 2 | 6 |
8 | 3 | 2 | 1 | 3 | 9 |
在写这个递归之前我并没有上网看思路、看代码,而是自己想了半小时吧,然后写出来了,不是很熟递归。。见谅
递归思路
公式化的递归公式很容易搜到。
比如三个月生一对就是F(n)=F(n-1)+F(n-2)
四个月生一对就是F(n)=F(n-1)+F(n-3)
但是,知道公式,我们更应该知道为什么?
从汉诺塔递归公式中我明白递归的函数之间其实就是各管各的,每个多胞胎兄弟们都把自己的事情做好,那么整件事也就全做好了。
在这个问题中有两个双胞胎兄弟