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);
}
}