前言:
迭代的是人,遞迴的是神。——l. peter deutsch
展開遞迴呼叫,是分析遞迴的利器。
進行數學歸納,是使用遞迴的利器。
對初學者而言,講一大堆理論,不如舉乙個例子。
本系列分三篇分析及使用遞迴。
第一篇——遞迴呼叫的分析
第二篇——遞迴呼叫的初步使用
第三篇——遞迴呼叫的高階使用
遞迴函式一般有如下特徵:
recursionfun()
//第一部分:遞迴結束條件,前期處理。
if 遞迴結束條件
return;
//第二部分:遞迴呼叫。
recusionfun();
//第三部分:遞迴呼叫後期處理,也可能有return語句。
下面看遞迴呼叫的4種形式:
1、
void recursionfun(int n)cout << n;
recursionfun(n - 1);
}
recursionfun(3)輸出321.2、
void recursionfun(int n)recursionfun(n - 1);
cout << n;
}
recursionfun(3)輸出123.3、
void recursionfun(int n)cout << n;
recursionfun(n - 1);
cout << n;
}
recursionfun(3)輸出321123.4、
int recursionfun(int n)int sum = 0;
sum = n + recursion(n - 1);
return sum;
}
recursionfun(3)輸出6.這裡為了簡便以recursionfun(2)為例。
void recursionfun(int n)記住,把遞迴呼叫展開分析!如下圖。cout << n;
recursionfun(n - 1);
}
快速排序的遞迴形式與非遞迴形式 C 版
快排的理解 設要排序的陣列是 a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產...
歸併排序的遞迴形式與非遞迴形式 C 版
歸併排序的核心思想是分治法,即將待排序資料分成多個小塊,對每個小塊進行排序,然後在兩兩合併小塊,最終完成對整體的排序 時間複雜度是nlogn 輸入 25,12,17,21,15,48 結果 遞迴實現 遞迴類似於對此方法的場景再現,即先對整體進行劃分,然後對劃分後的部分進行排序 對遞迴函式的理解可以認...
C 二分查詢的遞迴形式和非遞迴形式
二分查詢,又名折半查詢,在有序陣列中查詢元素的效率很高 缺點就是只能查詢有序表,因此適用於不用頻繁插入刪除的有序表 如果沒有二分查詢,通過遍歷來查詢表中元素的時間複雜度為o n 而二分查詢時間複雜度為o lgn 二分查詢的非遞迴形式 int binaryresearchnonr int arr,in...