入門程式語言都會講到遞迴,最常看到的範例就是河內塔,短短的幾行,對我來說是最遙遠的距離,不會的挫折讓我遺忘許久,剛好買了一本書《演算法洞見 遞推與遞迴》,至少可以動動頭腦,然後我發現以前我在寫程式,真的就是在寫,很常用的語法是沒有問題的,但是我不會回去複習我以前所寫的程式,時間一久那些原本懂的東西真的就又變成不懂,所以最簡單的方式就是理解之後把她背下來,時常的回去複習,我不知道這樣學習是否有效,反正就實驗看看。

書中我最喜歡的部分就是作者不是在寫程式,而是在寫一個東西,那種感覺我不會,但至比"寫程式"還要有趣與讓人興奮。

 

recursion不一樣的地方是她很喜歡從後面來,而且一定是到最後一個前面的東西才可以加總,這需要好好地想一想才可以理解。

 

遞推 = recurrence

遞迴 = recursion

範例: 1 + 2 + 3 + ... + 10

 

//recurrence

public class recurrence{
	public static void main(String[] args){
		
		int sum = 0;
		for(int i=1; i<=10; i++){
			sum+=i;
		}
		
		System.out.println(sum);
	}
}

 

//recursion

public class recursion{
	public static void main(String[] args){
	
		System.out.println(add(10));
	
	}
	
	public static int add(int sum){
		if( sum == 0) return 0;
		return sum+add(sum-1);
	}
}

 

遞迴小動畫

 

 

 

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

    書籍分享天地

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