关于斐波那契
已知:
-
问题背景:一对兔子从第3个月开始每月生一对新兔子,新兔子同样在第3个月开始繁殖。
-
关键观察:
-
第1个月:1对(初始兔子)。
-
第2个月:1对(未成熟,不生育)。
-
第3个月:1对(初始兔) + 1对(新生的) = 2对。
-
第4个月:初始兔继续生1对,前第3个月的1对新兔未成熟 → 3对。
-
第n个月:兔子总数 = 上个月已有的兔子数 + 新生的兔子数(即前前个月的兔子数)。
-
-
结论:每个月的兔子数构成斐波那契数列。
#include<stdio.h>
int main() {
// 古典问题(兔子生崽):有一对兔子,
// 从出生后第3个月起每个月都生一对兔子,
// 小兔子长到第三个月后每个月又生一对兔子,
// 假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)long long previous = 1 ,current = 1,next;int month ;printf("first:,%11d\n",previous);printf("second:,%11d\n",current);for(month = 3 ; moth <= 40;month++) {next = previous + current;printf("第%d:,%d\n",month,next);previous =current; //此时相当于【n-2】 current = next;//此时相当于【n-1】//为下一次循环打好基础 } return 0;
}