题目
输入输出
样例
解题思路
1、 这道题类似斐波那契数列,有两种方法,一种是利用for循环,另一种是利用递归,总体上还是递归的思想。
2、 首先这道题根据题意我们可以知道前4年牛的数量就是年数,第五年,牛的数量变成了6,第六年,牛的数量是9;所以可以看出来是有规律的,就是当年的牛的数量等于一年前的数量加上三年前的数量,f[n]=f[n-1]+f[n-3];
2、 直接给出代码。
参考代码
package DayDaytt;
import java.util.Scanner;
/**
* [递归]母牛的故事
* @author 超厉害的我啊
*题目描述:
*
*有一头母牛,它每年年初生一头小母牛。每头小母牛从
*第四个年头开始,每年年初也生一头小母牛。请编程实
*现在第n年的时候,共有多少头母牛?
*
*
*/
public class T127 {
//方法1
/*public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int f1=1;
int f2=2;
int f3=3;
int fn = 0;
int n=sc.nextInt();
if(n==0)
return;
if(n==1)
System.out.println(1);
if(n==2)
System.out.println(2);
if(n==3)
System.out.println(3);
if(n>=4) {
for(int i=4;i<=n;i++) {
fn=f3+f1;
f1=f2;
f2=f3;
f3=fn;
}
System.out.println(fn);
}
}
}*/
//方法2
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int k=sc.nextInt();
if(k==0)
return;
System.out.println(f(k));
}
}
static int f(int n) {
if(n==1)
return 1;
if(n==2)
return 2;
if(n==3)
return 3;
if(n>=4)
return f(n-1)+f(n-3);
return n;
}
}