<C语言经典100例>c9 兔子生长

来源:互联网 发布:编程的小松鼠壁挂炉 编辑:程序博客网 时间:2024/06/06 16:31
/* 【程序9】 *题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? *程序分析:兔子总数规律:2,2,4,6,10,16.... 兔子对数的规律为数列1,1,2,3,5,8....,在数列前补0,就会发现某个月兔子的对数为前两个月之和,采用递归思路做 */#include <stdio.h>int ret(int mon);int main(int argc, char const *argv[]){int mon;printf("请输入月:");scanf("%d", &mon);int sum = ret(mon);printf("第%d月后兔子总数为:%d\n", mon, sum*2);return 0;}int ret(int mon){if (mon==1 || mon==2){return 1;}elsereturn ret(mon-1)+ret(mon-2);}

为什么某个月的兔子数等于前两个之和呢?

这样来分析分析,

我们将兔子分成“大、中、小”三个阶段,兔子出生的第一个月为小兔子,第二个月为中兔子,第三个变成大兔子有了生育能力:


可见某个月的大兔子对数为前前月的兔子总数,中兔子对数+小兔子对数为前月的兔子总数。故这个月的对数为前月+前前月对数。


原创粉丝点击