漢諾塔的故事(C語言——遞歸)
阿新 • • 發佈:2017-08-19
code log 圓盤 印度 return 16px move class baidu
漢諾塔:
漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。
1 #include <stdio.h> 2 int move(int n, char x, char y, char z){/* 將 n 個圓盤借助 y 從 x 移動到 z */ 3 if(n == 1){ 4 printf("%c -> %c\n", x, z);/* 當只有一個圓盤的時候,直接移動到z */ 5 }else{ 6 move(n-1, x, z, y);/* 將n-1個圓盤借助 z 從 x 移動到 y */ 7 printf("%c -> %c\n", x, z);/* 將最後的一個圓盤從 x 移動到 z */ 8 move(n-1, y, x, z); /* 將 n-1 個圓盤借助 x 從 y 移動到 z */ 9 } 10 return 0; 11 12 } 13 int main(){ 14 int n; 15 printf("請輸入漢諾塔的層數:"); 16 scanf("%d",&n); 17 move(n, ‘X‘, ‘Y‘, ‘Z‘); 18 19 return 0; 20 }
漢諾塔的故事(C語言——遞歸)