遞歸算法10——複雜遞歸之大牛生小牛問題

 

一隻剛出生的小牛,4年後生一隻小牛,以後每年生一隻,現有一隻剛出生的小牛,問20年後共有多少隻。

【分析】

問題可以分成兩種情況處理:小於4年時,只有一隻小牛;大於4年時,小牛長成大牛,開始生小牛。遞歸函數可以這樣描述:

如果year<4,則返回1表示只有一頭牛;當year≥4時,第4年的大牛開始生小牛,每年生一個。而且每隔3年,小牛長成大牛,開始生小牛。

code:
 

#include<stdio.h>
#include <iostream>
long Cow(int year);
void main()
{
	long n;
	int year;
	printf("請輸入年數:");
	scanf("%d", &year);
	n = Cow(year);
	printf("%d年後牛的總數:%d\n", year, n);
	system("pause");
}
long Cow(int years)
{
	long count = 1;
	int i, subYears;
	if (years <= 3)
	{
		return 1;
	}
	i = 4;
	while (i <= years)
	{
		subYears = i - 3;
		count += Cow(subYears);
		i++;
	}
	return count;
}

結果:
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章