初级系列5.兔子产子问题

兔子产子问题

问题描述
有一对兔子,从出生后的第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;
}

posted @ 2019-09-08 10:03  电院院长  阅读(308)  评论(0编辑  收藏  举报