题外话:今天小测验的题目考到了兔子问题 觉得对算法还是不能忽视 特此记录一下
问题:
一对兔子 从出生后第3个月起每个月都生一对兔子
小兔子长到第三个月后每个月又生一对兔子
假如兔子都不死 问每个月的兔子总数为多少 ?
解决:
1、思考方式一:分析法
已知 兔龄2个月及2个月以上的兔子 在新的1个月 每只都会生1对兔子
那么对于新的这个月来说 之前兔龄2个月及2个月以上的兔子就是2个月前的兔子总数
因为之前兔龄2个月及2个月以上的兔子到这个月已经可以生崽了 其中的每对都会生一对小兔子
也就是说 新的月相比上个月增加的兔子数是1个月前的兔子数(基数) + 2个月前的兔子(崽子 相当于是复制品 每对兔子复制一份崽子)
即 当月的兔子数等于前两个月的兔子数之和
2、思考方式二:找规律法
第三个月时 一对兔子成了两对兔子 其中一对是它自己 另一对是生下的崽子
第四个月时 两对兔子变成了三对 其中一对是最初的一对 另一对是上个月生的兔子 第三对是刚生下来的崽子
第五个月时 三对兔子变成了五对···
第六个月时 五对兔子变成了八对···
这组数从第三个数开始 每个数是前两个数的和
我们可以分析得到 每个月的兔子数量为1,1,2,3,5,8,13,21…
这是一种典型的斐波那契数列
好了 下面该上代码了:
实现方式也有两种 一种是循环法 另一种是递归法
循环法:
public static void main(String[