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
類似這樣遞歸計算和的總結:倒着傳入,正着返回,返回到最小值結束