努力学习C语言的牧狗(C语言经典100例)———第十一题
致敬老大哥,因为最近学校各种大作业要写,我成功的写完了四篇超一千字的文章,由于第九和第十题两个都为输出图片,标准答案给的代码我也输出不了,因为ASCII值可能只到127,输出的只有乱码。我只能跳过了,如果有大佬能做出来,请告诉我,谢谢!
第十一题:
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
思路:我们在做数学应用题时,特别是在高中,先建模后解模是做每一题的通法。做这一题也一样,而这一题就是以斐波那契数列为模型的一道数列求值题。由于斐波那契数列的通项是:
An=An-1+An-2(n>=3)所以那对兔子前两个月都没有生。就像我给老大哥评论的一样。这一题可以将这个问题类比成细菌分裂问题,将一对兔子类比成一个细菌,因为细菌只是自行分裂,因此这样问题就好想很多了。这便是建模。而解模后几项很大,这就要用到计算机了。
解:
#include<stdio.h>
main()
{
int S[40], x, i;
S[0] = 1;
S[1] = 1;
for(i=2;i<40;i++)
{
S[i] = S[i - 1] + S[i - 2];
}
for (i = 0;i <= 39;i++)
{
printf("%10d", S[i]);
if ((i + 1) % 8 == 0)
printf("\n");
}
}
而得到的结果是这样的:
确实,最后几项的个数位数是挺大的。我特地把中间的间隔加到10才勉强分开。斐波那契数列是可以好好研究一下。很多时候一些题目并没有我们想的那么困难,只是如同洋葱一样,他的外皮很多,需要一层一层的剥开才能找到他的心,剥皮的过程是很艰辛的,但只要剥开了,那就能成功的做出这一题。
后记:因为四级考试快到了,再加上这星期被选为学生代表参加会议,时间是非常的紧,我也是忙里偷闲才做了这一次博客,而我vs已经做到18题了,做出一道题并不算难,但真是要把这一题讲明白确实不容易,还望大家理解,谢谢!