java遞歸的理解

public class Test {
    public static void main(String[] args) {
        //計算100之間的和用遞歸  1.2.3.4.5
        System.out.println(add(5));
     
    }

    public static int add(int a){
      if(a==1){
          return a;
      }else {
          return a + add(a-1);
      }
    }
}

//計算出結果是15  ,1+2+3+4+5=15

從代碼來看如果 a==1 返回1 ,返回1之後不再繼續執行

如果不等於1  返回 a+ add(a-1),調用自己的add繼續執行

那麼應該是 a==1時是結束位置,當a==1時,得到的結果是1 返回給誰呢?應爲a==1 是通過調用自己的方法add(a-1)得到的參數值,所以上一步的a =1+1 ,就是返回給2 ,然後 2的結果返回給3 ,一直返回到最開始的參數

運行過程是:5-----4------3------2-----1,結束,將結果依次

2+1

3+2+1

4+3+2+1

5+4+3+2+1

類似這樣遞歸計算和的總結:倒着傳入,正着返回,返回到最小值結束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章