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

 

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

 

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

遞推 = recurrence

遞迴 = recursion

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

 

//recurrence

#include<iostream>

using namespace std;

int main(void){

    int sum = 0;
    for(int i=1; i<=10; i++){
        sum+=i;
    }

    cout<<sum<<endl;

    return 0;
}

 

//recursion

#include<iostream>

using namespace std;

int add(int);

int main(void){


    cout<<add(10)<<endl;

    return 0;
}

int add(int sum){

    if(sum == 0) return 0;

    return sum+add(sum-1);
}

 

遞迴小動畫

 

 

 

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

    書籍分享天地

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