題目
有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實作在第n年的時候,共有多少頭母牛?
Input
輸入資料由多個測試執行個體組成,每個測試執行個體占一行,包括一個整數n(0
想法
每頭剛出生的小母牛在第四年開始每年生一頭,那這就類似于斐波那契數列問題(fibonacci)。
回顧一下斐波那契數列
int fibonacci(int n){
if(n==||n==)return ;
else return fibonacci(n-)+fibonacci(n-);
}
此題,小母牛在第四年就會像她媽媽一樣一年生一個小母牛,是以f(n-1)表示上一年的母牛數,那麼f(n-2)就表示三年前的牛數,也就是說,f(n-2)就是第n年具有生育能力的母牛!
那麼上一年的母牛加上新生的就等于第n年的母牛。
java代碼
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner it = new Scanner(System.in);
while(it.hasNext()) {
int n = it.nextInt();
if(n==)break;
Main x = new Main(); //建立對象
System.out.println(x.fn(n));
}
}
int fn(int n) {
if(n<=) return n;
else return fn(n-)+fn(n-);
}
}
c代碼
#include<stdio.h>
int fn(int n){
if(n<=)return n;
else return fn(n-)+fn(n-);
}
int main()
{
int n;
while(scanf("%d",&n)){
if(n==)break;
printf("%d\n",fn(n));
}
}