首页 > 其他 > 详细

算法设计:斐波那契数列

时间:2014-03-03 16:19:22      阅读:567      评论:0      收藏:0      [点我收藏+]

问题描述:

如果一对兔子每月能生1对小兔子,而每对小兔在它出生后的第3个月里,又能开始生1对小兔子,假定在不发生死亡的情况上,由1对初生的兔子开始,1年后能生出多少对兔子?


问题分析:

刚开始只有一对初生的兔子,一个月后,初生的兔子变成2个月大的兔子,此时,由于它还不能生小兔,因此总数仍为1;两个月时,原来两个月大的兔子长成三个月大的兔子,并且生下一个月大的小兔子,此时兔子总数为2;......这样一直推理下去,从初始状态开始,就会得到一个数列:1(初始),1,2,3,5,8,13,21,34,55,89,144,233。也就是斐波那契数列,它有个规律,从第三个数开始的每个数都是前两个数之和。

根据分析,可将开始的两个数设为一个数组。然后从第三个数开始,每个数都是前两个数相加的和,最后方可求得一年后生出的兔子总和。


代码实现:

#include <stdio.h>
# define NUM 13
//斐波那契数列
int main(){
	int i;
	long total[NUM]={1,1};
	
	for(i=2;i<NUM;i++){
		total[i]=total[i-1]+total[i-2];
	}
	for(i=0;i<NUM;i++){
		printf("%d月兔子总数为:%d\n",i,total[i]);
	}
	//getch();
	return 0;
} 


运行结果:


bubuko.com,布布扣

算法设计:斐波那契数列,布布扣,bubuko.com

算法设计:斐波那契数列

原文:http://blog.csdn.net/imstephen/article/details/17395725

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!