1. 程式人生 > >【c語言趣味程式設計100例】兔子問題

【c語言趣味程式設計100例】兔子問題

 兔子問題:
        有一對兔子,從出生後第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\t%d\t",fib1,fib2);
	for(int i=3;i<30;i++){
		
		fib = fib2+fib1;//總兔子數 等於前兩個月的和。fib1+fib2
		
		printf("%d\t",fib);
		if(i%4==0)
			printf("\n");
		fib2 =  fib1;
		fib1 = fib;
	}

}