概念:呼叫自身的函式稱為遞迴。要點在於遞迴呼叫呼叫自身區解決乙個規模化原始問題小一些的問題,因此保證遞迴過程能夠終止很重要。函式不在遞迴的情況乘坐 「基本情形」,函式呼叫自身來執行子任務的情況稱作 「遞迴情形」。
常見案例:
遞迴演算法經典用例:
斐波那契書列 ,階乘
歸併排序 , 快速排序
二分查詢
樹的遍歷和許多樹問題:中序遍歷 前序遍歷 後序遍歷
圖的遍歷:深度優先搜尋 廣度優先搜尋
遞迴呼叫實現判斷乙個陣列是否是有序陣列
static int isarrayinsortedorder(int a,int index)
n的階乘
static int jiecheng(int n)
if(n1)
return n*(jiecheng(n-1));
}漢諾塔
void towersofhanoi(int n, char frompeg , char topeg, char auxpeg)
// 利用c柱做輔助,將a柱最上面的n-1個圓盤移動到b柱
towersofhanoi( n-1, frompeg , topeg, auxpeg);
// 利用a柱做輔助,將b柱最上面的n-1個圓盤移動到c柱
towersofhanoi( n-1, topeg, auxpeg, frompeg );
}
資料結構與演算法 經典排序演算法實現
一 排序演算法 冒泡 選擇 插入 希爾 快速 歸併 堆和計數排序 省略了基數排序和桶排序 以及c語言自帶的排序函式 include include typedef intelementtype void swap elementtype a,elementtype b void bubble sor...
資料結構與演算法(經典排序) 堆排序
include include include include using namespace std int a 100 n 不使用遞迴建立小根堆 效率更高 void slidedown int i,int n 當左節點的值大於父節點時,不做更改 else 如果右節點存在且右節點的值小於父節點 這...
(資料結構與演算法)經典線性表 鍊錶實現
有乙個大神朋友跟我說,學資料結構,就得自己動手寫出這是什麼,用程式做出它是怎麼做的 我們接觸的資料結構有 線性結構和非線性結構。我們常見到的線性結構 線性表 棧 佇列 今天我們來看看這個一直說到的線性表。關於線性表 定義 線性表是具有相同資料型別的n n 0 個資料元素的有限序列。n為表長,n 0時...