提起漢諾塔,大家都會想起遞迴程式,大家都知道遞迴程式的實現是用棧來實現的,但是,有些程式是需要用到棧,但是我們還要編寫一棧的資料結構,挺麻煩的,所以,用遞迴程式實現起來是很簡單的!
1.學習資料結構時,講到迷宮演算法,是用棧實現的,如果用遞迴演算法實現會更簡單的.掃雷程式也是實行遞迴搜尋的.
對於迷宮程式:
if(map[i-1][j]==1)//i-1行j列是可通的,map是迷宮的形狀
draw(i-1,j);//畫圖,走到該位置
digui(i-1,j);//對i-1行j列位置進行遞迴搜尋
if(map[i][j-1]==1)//i行j-1列是可通的
draw(i,j-1);//畫圖,走到該位置
digui(i,j-1);//對i行j-1列位置進行遞迴搜尋
if(map[i+1][j]==1)//i+1行j列是可通的
draw(i+1,j);//畫圖,走到該位置
digui(i+1,j);//對i+1行j列位置進行遞迴搜尋
if(map[i+1][j]==1)//i+1行j列是可通的
draw(i+1,j);//畫圖,走到該位置
digui(i+1,j);//對i+1行j列位置進行遞迴搜尋
別忘記給已經走過的位置做標誌,否則,只能在原位置繞圈子!!
遞迴演算法應用
遞迴就是程式在執行的過程中呼叫自己 用自己定義自己 遞迴的三要素 邊界條件 遞迴前進段 遞迴返回段 遞迴和棧 遞迴和棧有這緊密的聯絡,大多數編譯器都是使用棧來實現遞迴的,當呼叫方法時,編譯器會把這個方法的所有引數和返回位址都壓入棧中,然後把控制轉移給這個方法。當方法返回時,這些值退棧。引數消失了,並...
遞迴演算法簡單應用
1.遞迴和非遞迴分別實現求第n個斐波那契數。斐波那契數 亦稱之為斐波那契數列 義大利語 successione di fibonacci 又稱 分割數列 費波那西數列 費波拿契數 費氏數列,指的是這樣乙個數列 1 1 2 3 5 8 13 21 在數學上,斐波那契數列以如下被以遞迴的方法定義 f0 ...
遞迴演算法應用例項 八皇后演算法
回溯演算法的經典案例 回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯.貝瑟爾於1848年提出 在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即 任意兩個皇后都不能外乾同一行 同一列或同一斜線上,問有多少種擺法。思路分析 第乙個皇后先放在第一行第一列 第二個皇后放在第二行第一列 然後判斷是否...