資料結構入門 遞迴

2021-07-04 08:24:53 字數 1580 閱讀 1997

資料結構是學習程式設計路上的重要一步,也為以後學習演算法打下基礎,資料結構又稱演算法與資料結構,與演算法密不可分,是計算機軟體專業的核心課程,其重要性不言而喻。

遞迴分為遞推與回歸兩個過程,遞迴的優點是容易理解,方便程式設計,可以解決很多問題,缺點是需要不斷的呼叫遞迴,時間效率慢,空間占用大。

遞迴示例:

# include int f(int n)

//遞迴的數值必須是變動的,可增可減,但必須有乙個上下限,達到上下限後遞迴終止返回,其遞迴的規模始終是遞減的。

int g(int n)

int main(void)

遞迴示例:

# include void f();

void g();

void k();

//函式間的互相呼叫及其返回順序

int main(void)

void f()

void g()

void k()

遞迴必須設定結束條件,不能無限遞迴:

# include void f();

int main()

void f()

//進行遞迴所用的棧滿後,溢位,程式出錯而停止。

//遞迴不能出現死遞迴,必須設定遞迴結束的條件。

遞迴的呼叫:

# include void f(int);

void g(int);

int main(void)

//f函式與g函式間接呼叫自己

void f(int n)

void g(int m)

//k函式直接呼叫自己

void k(int val)

遞迴求和:

# includeint f(int n)

int main(void)

漢諾塔問題(很經典的程式,適合遞迴來解決):

# include void hannuota(int, char, char, char);

int main(void)

void hannuota(int n, char a, char b, char c)

else

}

階乘(迴圈實現):

遞迴與迴圈在一定程式上可以互相實現的。

# include int main(void)

printf("%d的階乘結果是:%d\n", val, mult);

return 0;

}

階乘(遞迴實現):

# include //用遞迴實現

long f(long n)

//n的解決必須借助n-1的結果,不斷遞減,最後回歸。

//遞迴分為遞推與回歸兩個方面。

int main(void)

資料 結構 遞迴

遞迴不一定非要像斐波拉契數列一樣在return中呼叫函式 遞迴的結束條件就是初始條件值 通常的方法將遞迴呼叫放在if語句中 n!通過遞迴實現 常用方法還是通過while實現 def jiecheng n if n 0 return 1 else sum n jiecheng n 1 右邊只有階乘表示...

資料結構 遞迴

所謂遞迴,就是在乙個函式,過程,或者資料結構的內部,又直接或間接出現定義本身的應用。在以下三種情況中,常常使用遞迴。比如階乘函式,我們能夠將其分解成幾個小問題來求解,比如求5!我們可以先求4!想求4!先求3!這樣一步步使問題簡化的方法,稱之為分治法。採取分治法求解,需要滿足下面三個條件 1.能夠將乙...

資料結構 遞迴

最近開始學習王爭老師的 資料結構與演算法之美 通過總結再加上自己的思考的形式記錄這門課程,文章主要作為學習歷程的記錄。遞迴是一種非常高效 簡潔的編碼技巧,一種應用非常廣泛的演算法,比如dfs深度優先搜尋 前中後序二叉樹遍歷等都是使用遞迴。基本上所有的遞迴問題都可以用遞推公式來表示。以尋找電影排數為例...