项目场景:
提示:这里简述项目相关背景:
// 有一头小母牛。从第四年起每年生一头小母牛。
// 生的小母牛也是从第四年起每年生一头小母牛。
// 如此循环。编程求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;}}
}