演算法與資料結構 三 遞迴

2021-09-29 10:58:49 字數 1227 閱讀 9246

在方法的內部呼叫該方法本身的程式設計方式

如圖所示,四個函式可以看做都是乙個方法,只不過為了區分流程畫成了四個,資料從第乙個入口進入該方法,符合一定條件之後反覆呼叫本身,直到符合條件不需要呼叫本身時將結果一層一層返回,直到第一層輸出

又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、…… 從第三個開始它本身時前兩個數的和,以此類推

遞迴實現:

package com.company;

/** * @author shuoshi.yan

* @package:com.company

* @classname:fabonacci數列

* @description:

* @date 2019-11-08 14:27

* @version:v1.0

* @notice:本內容僅限於*******內部傳閱,禁止外洩以及用於其他的商業專案

**/public

class

fabonacci

else

}public

static

void

main

(string[

] args)

}

看**之前建議先玩一下"漢諾塔"遊戲

**實現:

package com.company;

/** * @author shuoshi.yan

* @package:com.company

* @classname:(hano)漢諾塔

* @description:

* @date 2019-11-08 17:28

* @version:v1.0

* @notice:本內容僅限於*******內部傳閱,禁止外洩以及用於其他的商業專案

**/public

class

hannuota

else

}public

static

void

main

(string[

] args)

}

資料結構與演算法 遞迴

一 概念 遞迴是一種高效 簡介的編碼技巧,一種應用很廣泛的演算法,比如dfs深度優先搜尋,前中後序二叉樹遍歷等都是使用遞迴。方法或函式呼叫自身的方式成為遞迴呼叫,呼叫稱為遞,返回成為歸 所有遞迴問題都可以用遞迴公式來表示 二 遞迴優缺點 優點 簡潔 缺點 堆疊溢位風險 可根據調整遞迴呼叫的最大深度來...

資料結構與演算法 認識遞迴

淺識 1 遞迴與迴圈 理論上,任何迴圈都可以重寫為遞迴形式 有些語言沒有迴圈語句,只能使用遞迴。2 迴圈改遞迴 1 發現邏輯 相似性 2 一定要有 出口 不然就會死迴圈 3 構造相似性 如果沒有明顯的相似性,可能是缺少引數,需要主動構造,與遞推類似 4 遞迴呼叫 1 遞迴呼叫僅僅是被調函式正好是主調...

11 資料結構與演算法 遞迴

created by chen da 階乘函式就是典型的遞迴 def fact n if n 0 return 1 else return n fact n 1 遞迴的特點 遞迴必須包含乙個基本的出口 base case 否則就會無限遞迴,最終導致棧溢位。比如這裡就是n 0時返回1.遞迴必須包含乙個...