学习目标:
1、问题描述
有一对兔子,从出生后的第3个月起每个月都生一堆兔子。小兔子长到第三个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
2、问题分析
3、算法设计
该题目是典型的迭代循环
公式展示
f
i
b
n
=
f
i
b
n
−
1
+
f
i
b
n
−
2
(
n
>
=
3
)
.
迭
代
公
式
fib_n=fib_n-_1+fib_n-_2(n>=3).迭代公式
fibn=fibn−1+fibn−2(n>=3).迭代公式
f
i
b
=
f
i
b
2
=
1
(
n
=
1
,
2
)
.
初
值
fib = fib_2=1(n=1,2). 初值
fib=fib2=1(n=1,2).初值
fib1是前一个月的兔子数,fib2中存放的是前两个月的兔子数
4、 程序代码
#include<stdio.h>
void main()
{
long fib1=1,fib2=1,fib;
int i;
printf("%12ld%12ld",fib1,fib2); /*输出第一个月和第二个月的兔子数*/
for(i=3;i<=30;i++)
{
fib=fib1+fib2; /*迭代求出当前月份的兔子数*/
printf("%12d",fib); /*输出当前月份兔子数*/
if(i%4==0)
printf("\n"); /*每行输出4个*/
fib2=fib1; /*为下一次迭代作准备,求出新的fib2*/
fib1=fib; /*求出新的fib1*/
}
}
5、 运行结果
在devc++下运行,结果如下: