遞迴實現小迷宮(小球到終點的走動路徑)

2022-01-11 18:20:52 字數 1451 閱讀 1181

使用遞迴來實現小球找到終點的過程

主要需要注意:1、使用遞迴時必須得有乙個退出遞迴的條件,並且遞迴的不斷呼叫應該使的越來越靠近這個條件,否則就是死迴圈。

2、由於遞迴的呼叫次數很多,則需要遵循誰呼叫,就把結果返回給誰,然後繼續執行。

3、遞迴不斷的在棧中加入方法,如果是死迴圈則會導致棧溢位的錯誤。

4、遞迴呼叫的函式在棧中是先執行最外面的,然後執行裡面的,類似於階乘的實現。

**如下:

1

package

com.pangzi.stucture;23

public

class

migong

1516

//把左右置為1

17for(int i = 0;i < 8;i++)

2122

//設定擋板 第四行第二列,和第四行第三列

23 map [3][1] = 1;

24 map [3][2] = 1;

2526

//輸出地圖

27for(int i = 0;i < 8;i++)

31system.out.println();32}

3334

//使用遞迴找路

35 setway(map,1,1);

3637

//輸出新的地圖,小球走過並且標識過的路線

38 system.out.println("小球走過的路");

39for(int i = 0;i < 8;i++)

43system.out.println();44}

4546}47

48//

使用遞迴回溯來給小球找路,小球要去右下角,給方法傳入地圖和小球的開始位置,如果找到了通路返回true

49//

說明:map 是地圖

50//

i,j是小球的開始位置(1,1)

51//

如果小球到int[6][5]則說明到終點了,找到路了

52//

當地圖的map[i][j]的值為0時,表示該點沒有走過,當為1時為檣,當為2時表示可以走,當為3時表示該位置已經走過了,但是走不通

53//

在走迷宮時,需要先去確定乙個策略(方法) 下-》右-》上-》左 ,如果該點走不通,再回溯

54public

static

boolean setway(int map,int i,int

j)else

else

if(setway(map,i,j+1))else

if(setway(map,i-1,j))else

if(setway(map,i,j-1))else

73 }else76}

77}7879

8081

82 }

Python基於遞迴演算法實現的走迷宮問題

什麼是遞迴?簡單地理解就是函式呼叫自身的過程就稱之為遞迴。什麼時候用到遞迴?如果乙個問題可以表示為更小規模的迭代運算,就可以使用遞迴演算法。迷宮問題 乙個由0或1構成的二維陣列中,假設1是可以移動到的點,0是不能程式設計客棧移動到的點,如何從陣列中間乙個值為1的點出發,每一只能朝上下左右四個方向移動...

js實現簡單的遞迴小例項

遞迴是什麼 程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴做為一種演算法在程式語言中廣泛應用。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重...

生成迷宮的深度優先遍歷演算法的非遞迴實現

生成一張二維單路徑迷宮圖,可以想到的方法之一就是圖的遍歷。因為單路徑顧名思義就是要求每個節點能切只能訪問一次,這正好和圖的遍歷方法一樣。其次就是圖的遍歷保證了只有一條路徑。執行後即如下圖所示 首先建立乙個二維陣列,char maze h w 其中h和w必須是奇數,建立乙個空間足夠大的棧stack h...