n=0表示输入数据的结束,不做处理。
每个输出占一行。
2 4 5 0
2 4 6
分析:
第一年牛的头数为2,生出1头小牛。
第二年牛的头数为3,生出1头小牛、
到第5年,小牛出生量+1
所以可以得出规律,每年的小牛为2,3,4,6,9。。。
所以可以得出第三年的小牛出生数量为前两年之和、既: a[3]=a[2]+a[1]
所以,主要的算法就是 a[n]=a[n-1]+a[n-2]
从而得出的代码为
import java.math.BigInteger;
import java.util.Scanner;
public class MoonDemo {
private static int n;
public static int cal(int n) {
if (n <= 4) {
return n;
} else {// n>4
return cal(n - 1) + cal(n - 3);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
if (n == 0) {
return;
}
int sum = cal(n);
System.out.println(sum);
}
}
}
不过想过了很多方法,都无法让代码运行结果为先全部输入,后全部运算然后输出
想了很多方法还是不能够解决
所以这个程序是有问题的,不过得出的答案没错,不过不能在acm中ac。。。好气