有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 n 个月的兔子对数为多少?
这是做的一道练习题,刚看到题目时,也是想不出来方法,感觉学了这么就还是很菜,这就很难受,可能还是因为做题少了没有做题的感觉,遇到问题不知道该如何下手,学过之后感觉题目并不是难,而是没有找到方法,就比如这道题目,认真分析一下也就那样吧。这里在分析一下。
a b
1 2 3 4 5 6 月份
1 1 2 3 5 8 总数
用上面的数据做为依据,一个代表月份,一个代表总数,通过数据分析可以得到,前两个月的兔子的数目总和,是的三个月的兔子总和,如一月加二月总和等于三月的;二月加三月的总和等于四月的,……可以这样一次类推。这样分析好过后写代码就很方便了,主要代码编写可以分为两种情况,第一为当月份小于三的时候,直接返回1,就好了,第二种就是三月以上的情况了,这里定义两个变量,a先代表一月份的兔子个数,b先代表二月份的个数,循环条件从三月份开始,直到n月份结束,期间不到判断条件,就一月一月往后走,当n=3时,兔子的总和就是一月加二月也就是sum=a+b。这时在吧b赋值给a, sum付值给b也就是他们都向后移了一位,变成了下面的这种情况,
a b
1 2 3 4 5 6 …… 月份
1 1 2 3 5 8 ……总数
当n=4时在接着遍历一遍结束后,如下结果,
a b
1 2 3 4 5 6 …… 月份
1 1 2 3 5 8…… 总数
就这样依次类推,只要知道月份就能算出结果了。