/* 问题描述:若母牛从其出生第四年(3周年后)开始每年都会生一头小母牛,
* 按这个规律,第一年只有一头年龄为1岁的母牛,求第n年后有多少牛?
*/
public class Cow1 {
public static int f(int n) {
if (n <= 3) // 这里是n<=3,而不是n<3;
return 1;
else
return f(n - 1) + f(n - 3);
}
public static void main(String args[]) {
int n = 50;
System.out.print("第" + n + "年有多少母牛:" + f(n));
}
}
递归的效显然很低,为了避免重复调用造成的资源开销,现在用迭代来做
//迭代算法的高效性!!!
public class Cow2 {
public static void main(String args[]) {
int n = 50;
int t1 = 1, t2 = 1, t3 = 1, tn = 0;
for (int i = 4; i <= n; i++) {
tn = t3 + t1;
t1 = t2;
t2 = t3;
t3 = tn;
}
System.out.print("第" + n + "年共有多少头母牛" + tn + "\n");
}
}