一隻剛出生的小牛,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;
}
結果: