问题描述
有一对兔子,从出生后的第3个月起每个月都生一对兔子, 小兔子长到第3个月后每个月又生一对兔子, 假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
问题分析
月数 兔子总数
1 1
2 1
3 2
4 3
5 5
6 8
7 13
Fibonacci数列
算法设计
迭代循环, 即是一个不断用新值取代变量的旧值,然后由变量旧值递推出变量新值
的过程, 这种迭代与如下因素有关:初值, 迭代公式, 迭代次数
迭代公式
fib1 = fib2 =1 (n =1, 2) 初值
fib(n) = fib(n-1) + fib(n-2) (n >= 3) 迭代公式
/* !< use c */
#include <stdio.h>
#include <stdlib.h>
int 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个
fib1 = fib2; //为下一次迭代作准备, 求出新的fib2
fib2 = fib; //求出新的fib1
}
return 0;
}
原文:https://www.cnblogs.com/xuzhaoping/p/11484492.html