資料結構5_遞迴
定義
- 一個函式自己直接或間接呼叫自己。
求階乘
- 遞迴思想:n的規模的解決需要藉助n-1,n-1規模的解決需要藉助n-2…直到到達一個臨界點。
- 迴圈實現
- 遞迴實現
1+2+3+4+…+100的和
遞迴必須滿足的三個條件
- 遞迴必須要有一個明確的終止條件
- 該函式所處理的資料規模必須在遞減
- 這個轉化必須是可解的
迴圈和遞迴
- 所有的迴圈都可以使用遞迴實現,但不是所有的遞迴都可以用迴圈解決。
- 遞迴:
- 易於理解
- 速度慢
- 儲存空間大
- 迴圈:
- 不易理解
- 速度快
- 儲存空間小
漢諾塔
public class Hanoi {
public static void main(String[] args) {
move(4,"石柱1","石柱2","石柱3");
}
private static void move(int i, String from, String buffer, String to) {
// 第一步:遞迴結束條件
// 最後一個圓盤從from到to
if(i == 1){
System.out.println(i+"from"+from+"to"+to);
return;
}
// i-1個圓盤從from到buffer
move(i-1,from,to,buffer);
System.out.println(i+"from"+from+"to"+to);
// i-1個圓盤從buffer到to
move(i-1,buffer,from,to);
// System.out.println(i+"from"+from+"to"+to);
}
}
遞迴的應用
- 樹和森林就是以遞迴的方式定義的
- 樹和圖的很多演算法都是以遞迴來實現的
- 很多數學公式就是以遞迴的方式定義的
- 斐波拉契數列
- 1 2 3 5 8 13 21 34 …
- 斐波拉契數列
相關文章
- 資料結構-遞迴資料結構遞迴
- 基礎資料結構之遞迴資料結構遞迴
- 資料結構和演算法:遞迴資料結構演算法遞迴
- 資料結構與演算法:遞迴資料結構演算法遞迴
- 資料結構:歸併排序(非遞迴)資料結構排序遞迴
- js樹型結構資料簡易遞迴JS遞迴
- 實戰PHP資料結構基礎之遞迴PHP資料結構遞迴
- 實戰 PHP 資料結構基礎之遞迴PHP資料結構遞迴
- 資料結構與演算法學習總結--遞迴資料結構演算法遞迴
- 資料結構學習筆記-遞迴求解森林高度資料結構筆記遞迴
- Java資料結構與演算法--遞迴和回溯Java資料結構演算法遞迴
- 通用-遞迴樹結構遞迴
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴
- 資料結構與演算法(十一)——演算法-遞迴資料結構演算法遞迴
- 資料結構-樹以及深度、廣度優先遍歷(遞迴和非遞迴,python實現)資料結構遞迴Python
- ORACLE遞迴查詢(適用於ID,PARENTID結構資料表)Oracle遞迴
- 【Java資料結構與演算法筆記(二)】樹的四種遍歷方式(遞迴&非遞迴)Java資料結構演算法筆記遞迴
- 資料結構和演算法面試題系列—遞迴演算法總結資料結構演算法面試題遞迴
- 前端學習 資料結構與演算法 快速入門 系列 —— 遞迴前端資料結構演算法遞迴
- 資料結構與演算法讀書筆記 - 004 -C++遞迴資料結構演算法筆記C++遞迴
- python 遞迴樹狀結構 和 排序Python遞迴排序
- 資料結構之迴圈連結串列資料結構
- 資料結構和演算法——遞迴-八皇后問題(回溯演算法)資料結構演算法遞迴
- 遞迴總結遞迴
- 資料結構初階--二叉樹(前中後序遍歷遞迴+非遞迴實現+相關求算結點實現)資料結構二叉樹遞迴
- Java實現遞迴查詢樹結構Java遞迴
- 遞迴和遞推總結遞迴
- 重學資料結構和演算法(三)之遞迴、二分、字串匹配資料結構演算法遞迴字串匹配
- [資料結構]二叉樹的前中後序遍歷(遞迴+迭代實現)資料結構二叉樹遞迴
- 遞迴遍歷樹狀結構優雅實現遞迴
- Vue遞迴元件實現樹形結構選單Vue遞迴元件
- 二叉樹(資料結構)——利用“遞迴”思想實現相關演算法問題二叉樹資料結構遞迴演算法
- 資料結構-迴圈佇列(Python實現)資料結構佇列Python
- 資料結構——迴圈佇列PTA習題資料結構佇列
- 連結串列與遞迴遞迴
- 5_執行時資料區概述
- java讀取excel層級結構的遞迴寫法JavaExcel遞迴
- Java版-資料結構-佇列(迴圈佇列)Java資料結構佇列