1. 請寫出所有完整的遞迥呼叫的執行過程:
執行過程:
https://spreadsheets.google.com/spreadsheet/ccc?key=0ApUm9nzN2PbqdERUemNMeXBZWG50YWs1WTZDdlFwa0E&hl=zh_TW
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | /* 程式範例: Ch5-4-2.c */ int maze[7][10] = { /* 迷宮陣列,數字0可走, 1不可走 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; /* 走迷宮的遞迴函數 */ int { if { /* 是否是迷宮出口 */ maze[x][y] = 2; /* 記錄最後走過的路 */ return 1; } else if { /* 是不是可以走的路 */ maze[x][y] = 2; /* 記錄己經走過的路 */ if ( ( findPath(x - 1,y) + /* 往上 */ findPath(x + 1,y) + /* 往下 */ findPath(x,y - 1) + /* 往左 */ findPath(x,y + 1) ) > 0 ) /* 往右 */ return 1; else { maze[x][y] = 0; /* 此路不通取消記號 */ return 0; } } else return 0; } /* 主程式: 使用遞迴函數在陣列走迷宮 */ int { int i,j; findPath(5,8); /* 呼叫遞迴函數 */ printf("迷宮路徑圖(從右下角到左上角): \n"); for { /* 顯示迷宮圖形 */ for printf("%d ", maze[i][j]); /* 顯示座標值 */ printf("\n"); } printf("\n數字 1: 牆壁\n數字 2: 走過的路徑\n"); system("PAUSE"); return 0; } |
沒有留言:
張貼留言