兔子问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数?
解题思路:
兔子的增长个数 其本质上与斐波那契数列是一致的 就是
本月的兔子总数等于 前一个月的兔子数和前两个月得兔子总个数
对fib1 和 fib2 初始化为1
每执行一个for 兔子的总个数就是前两个月的和,fib = fib1+fib2
等得到总兔子数fib后,应该将前一个月的兔子数赋值给前两个月的兔子数fib2 = fib1
总兔子数fib1 = fib 这样依次执行下去,就可以得到总兔子数
#include<stdio.h>
void main(){
/*
兔子问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数?
解题思路:
兔子的增长个数 其本质上与斐波那契数列是一致的 就是
本月的兔子总数等于 前一个月的兔子数和前两个月得兔子总个数
对fib1 和 fib2 初始化为1
每执行一个for 兔子的总个数就是前两个月的和,fib = fib1+fib2
等得到总兔子数fib后,应该将前一个月的兔子数赋值给前两个月的兔子数fib2 = fib1
总兔子数fib1 = fib 这样依次执行下去,就可以得到总兔子数
**/
int fib1 = 1,fib2 = 1,fib = 0;//fib1代表当前前一个月的兔子数量,fib2 代表前两个月的兔子数量
printf("%d %d ",fib1,fib2);
for(int i=3;i<30;i++){
fib = fib2+fib1;//总兔子数 等于前两个月的和。fib1+fib2
printf("%d ",fib);
if(i%4==0)
printf("
");
fib2 = fib1;
fib1 = fib;
}
}