1 // 漢諾塔
2 # include <stdio.h>
3 void hanoi ( int n, char a, char b, char c ) //這裡代表將a柱子上的盤子藉助b柱子移動到c柱子
4 { if (1 == n) //如果是一個盤子直接將a柱子上的盤子移動到c
5 {
6 printf("%c-->%c\n",a,c);
7 }
8 else
9 {
10 hanoi ( n-1, a, c, b ) ; //將a柱子上n-1個盤子藉助c柱子,移動到b柱子
11 printf("%c-->%c\n",a , c) ; //再直接將a柱子上的最後一個盤子移動到c
12 hanoi ( n-1, b, a, c ) ; //然後將b柱子上的n-1個盤子藉助a移動到c
13 }
14 }
15 int main ()
16 { int n ;
17 printf( "Input the number of diskes:") ;
18 scanf("%d",&n) ;
19 hanoi ( n, "A" , "B" , "C" ) ;
20 return 0;
21 }
複製程式碼
1 // 漢諾塔
2 # include <stdio.h>
3 void hanoi ( int n, char a, char b, char c ) //這裡代表將a柱子上的盤子藉助b柱子移動到c柱子
4 { if (1 == n) //如果是一個盤子直接將a柱子上的盤子移動到c
5 {
6 printf("%c-->%c\n",a,c);
7 }
8 else
9 {
10 hanoi ( n-1, a, c, b ) ; //將a柱子上n-1個盤子藉助c柱子,移動到b柱子
11 printf("%c-->%c\n",a , c) ; //再直接將a柱子上的最後一個盤子移動到c
12 hanoi ( n-1, b, a, c ) ; //然後將b柱子上的n-1個盤子藉助a移動到c
13 }
14 }
15 int main ()
16 { int n ;
17 printf( "Input the number of diskes:") ;
18 scanf("%d",&n) ;
19 hanoi ( n, "A" , "B" , "C" ) ;
20 return 0;
21 }
複製程式碼