/*
题目:兔子产子问题
内容:有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第三个月
后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数
为多少?
作答者:小白杨
收获:1、该题目是典型的迭代循环,而自己没看出来。即是一个变量不断用新值取代
变量旧值,然后由变量旧值递推出变量新值的过程。算法可以描述为
{fib = fib2 = 1(n=1,2)初值 fibn = fibn-1 + fibn-2(n>=3)迭代公式
*/
#include <stdio.h>
/*
int main()
{
int month,i;
int a[31] = {0}; //定义一个数组存储每个月新生的兔子
a[1] = 1; //第一个月的兔子为一个
printf("第1个月的兔子为1个\n");
for(month=2;month<=30;month++)
{
for(i=0;i<month-1;i++)
{
a[month] += a[i]; //第N个月新生的兔子为从0~N-2个月的兔子之和
}
printf("第%d个月的兔子为%d个\n",month,2*a[month]+a[month-1]);
}
return 0;
}*/
void main()
{
long fib,fib1 = 1,fib2 = 1;
int month;
printf("%12ld%12ld",fib1,fib2); //输出第1个月和第2个月的兔子数
for(month=3;month<=30;month++)
{
fib = fib1+fib2; //迭代求出当前月份的兔子数
printf("%12d",fib); //输出当前月份的兔子数
if(month%4 == 0)
printf("\n"); //每行输出4个
fib2 = fib1;
fib1 = fib;
}
}
/*
兔子产子问题
最新推荐文章于 2024-07-26 21:03:57 发布