package day01;

/**

* 递归: 在功能(方法)中直接、间接调用了功能(方法)本身

*

* 老和尚讲故事(){

* 1) 从前有座山

* 2) 山上有座庙

* 3) 庙里有个老和尚

* 4) 如果老和尚累死了,就不讲了! ( 递归结束条件)

* 5) 老和尚讲故事()

* }

* y = 1+2+...+(n-1)+n = f(n) = f(n-1)+n 并且 f(1)=1

*

* 递归的优点

* 优点: 业务问题解决的很优雅 只需要解决一个层次,其他层次

* 问题就递归解决了。

* 递归的缺点

* 1) 大量消耗栈内存空间,不能进行过深层次的递归

* 否则 可能出现 栈溢出错误

* 使用递归的要点

* 1)不能过深的递归

* 2)不能发散递归

* 3)必须有结束条件

*/

public class Demo02 {

public static void main(String[] args) {

int n = 10000;//栈运行错误

int y = f(n);

System.out.println(y);

}

public static int f(int n){

if(n==1){

return 1;

}

return n + f(n-1);

}

}