项目场景:
提示:这里简述项目相关背景:
// 有一头小母牛。从第四年起每年生一头小母牛。
// 生的小母牛也是从第四年起每年生一头小母牛。
// 如此循环。编程求N年后有多少头母牛。。。。。。。
/*
* 思路:递归套娃
* Year count
* 1 1
* 2 1
* 3 1
* 4 2
* 5 3
* 6 4
* 7 6
* 8 9
* …
*/
代码编写
提示:这里描述项目中遇到的问题:
递归:函数中调用自身
1.递归必须要有出口 否则会导致栈空间溢出
2.每一次的结果都依托于上一次的计算,没调用一次自身,就会在内存的栈空间中开辟一个独立的空间,知道递归出口(栈顶)的出现,然后后进先出从上到下逐层计算出结果
3.每个占空间中的变量独立 互不影响
package OOP.Recurve;
import javax.lang.model.util.ElementScanner6;
public class cowCreateLittle {
public static void main(String[] args) {
// 有一头小母牛。从第四年起每年生一头小母牛。
// 生的小母牛也是从第四年起每年生一头小母牛。
// 如此循环。编程求N年后有多少头母牛。。。。。。。
/*
* 思路:递归套娃
* Year count
* 1 1
* 2 1
* 3 1
* 4 2
* 5 3
* 6 4
* 7 6
* 8 9
* ............
*/
Cow cow1 = new Cow();
int res = cow1.getRes(11);
if (res == 0) {
System.out.println("请输入合法数据");
} else {
System.out.println("有羊" + res + "只");
}
}
}
class Cow {
public int getRes(int n) {
if (n > 0) {
if (n < 4) {
return 1;
}
return getRes(n - 1) + getRes(n - 3);
} else {
return 0;
}
}
}