HDOJ2018 母牛的故事
Problem Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
每个输出占一行。
Sample Input
2
4
5
0
Sample Output
2
4
6
从样例我们可以分析出,小母牛长三年就可以生牛,那么当前的牛就是去年的牛加上三年前的牛,因为三年前的牛等价于都再生一只小牛
即f(n)=f(n-1)+f(n-3)
由上面几组样例可以知道f(0)=1,f(1)=1,f(2)=2,这样,我们就可以建立一个递归函数,代码如下:
1 #include <stdio.h> 2 3 int fib(int n){ 4 if(n==0) return 1; 5 if(n==1) return 1; 6 if(n==2) return 2; 7 return fib(n-1)+fib(n-3); 8 } 9 10 int main() 11 { 12 int n; 13 while(scanf("%d", &n)&&(n!=0)) 14 printf("%d\n", fib(n)); 15 return 0; 16 }

浙公网安备 33010602011771号