close

遞迴(Recursion)

通過呼叫自己來達成目標,

初學者會覺得難以理解,

因為我們的程式是從上到下左到右去執行,

但是遞迴要從後面開始看,

再加上對return所回傳的值感到困惑,

下面來釐清一下return到底回傳什麼?

 

public static int add(int num){
    return num;
}

 

int a = add(5); // a=5

System.out.println(add(5)); //System.out.println(5);


除了回傳值,

遞迴程式還會包含一個結束條件,

public static int add(int num){
    if(num == 0) return -1;

    return num;
}

如果沒有結束的條件,就會形成無限迴圈,就好像下面這樣

for(int i=0;;i++){


}

//or

while(true){


}

 

上面講了兩個遞迴所包含的條件

1.呼叫自己

2.結束條件

public static int add(int num){
    if(num == 0) return 0;

    return num+add(num-1);
}

 

至於執行的過程,

可以想成是俄羅斯套娃,

不開到後面不知道裡面有多少個。

下面的網址是程式的執行過程,不懂上面的程式如何執行可以觀看。

https://www.youtube.com/watch?v=LUXYTsE8cvU

 

 

 

arrow
arrow
    創作者介紹
    創作者 讀書小天地 的頭像
    讀書小天地

    書籍分享天地

    讀書小天地 發表在 痞客邦 留言(0) 人氣()