go 資料結構 遞迴

2022-06-17 08:24:10 字數 1229 閱讀 6988

1.1 遞迴的應用場景(迷宮回溯問題)

1.2 遞迴概念

​ 遞迴就是函式/方法自己呼叫自己,每次呼叫時傳入不同的變數,遞迴有助於程式設計者解決複雜的問題,同時讓**變得簡單。

1.3 遞迴快速入門

​ 1、列印問題

​ 2、階乘問題

1.4 遞迴解決問題

1、各種數學問題:n皇后問題、漢諾塔、階乘問題、迷宮問題等

2、將用棧解決的問題-------》遞迴**比較簡潔

1.5 遞迴需要遵守的原則

1、執行乙個函式時,就建立乙個新的受保護的獨立空間(新函式棧)

2、函式的區域性變數是獨立的,不會互相影響

3、遞迴必須向退出遞迴的條件逼近,否則就是無限遞迴

4、當乙個函式執行完畢,或者遇到return,就會返回,遵守誰呼叫就將結果返回給誰,同時當函式執行完畢或者返回時,該函式就會被系統銷毀

1.6 迷宮問題**實現

package main

import "fmt"

//編寫函式,完成迷宮路線

//i,j表示對地圖的點進行測試

func setway(mymap *[8][7]int, i, j int) bool else else if setway(mymap, i, j+1) else if setway(mymap, i+1, j) else if setway(mymap, i, j-1) else

} else }}

func main()

i, j := 0, 0

for i = 0; i < 7; i++

for j = 0; j < 8; j++

mymap[3][1] = 1

mymap[3][2] = 1

//列印地圖

for i = 0; i < 8; i++

fmt.println()

} setway(&mymap, 1, 1)

fmt.println("地圖走完::::")

for i = 0; i < 8; i++

fmt.println()

}}

參考**:

資料 結構 遞迴

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

資料結構 遞迴

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

資料結構 遞迴

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