1 #define _CRT_SECURE_NO_WARNINGS//防止vs下scanf报错
2 #include <stdio.h>
3 #include <stdlib.h>
4
5
6 void hanoi(int number, char original, char assist, char target);//hanoi(圆盘序号,原位置,辅助位置, 目标位置)
7 void move(int number, char original, char target);
8
9 int main(void)
10 {
11 int number;
12 char original = 'A';
13 char assist = 'B';
14 char target = 'C';
15 printf("请输入圆盘个数:");
16 scanf("%d", &number);
17 hanoi(number, original, assist, target);
18 system("pause");
19 return 0;
20 }
21
22 void hanoi(int number, char original, char assist, char target)//hanoi(圆盘序号,原位置,辅助位置, 目标位置)
23 {
24 if (number == 1)
25 {
26 move(1, original, target);
27 }
28 else
29 {
30 hanoi(number - 1, original, target, assist);//先把前n-1个圆盘移动到辅助圆盘上
31 move(number, original, target);//再把第n个圆盘移动到目标圆盘上
32 hanoi(number - 1, assist, original, target);//最后把前n-1个圆盘移动到目标圆盘上
33 }
34 }
35
36 void move(int number, char original, char target)
37 {
38 printf("把第%d个圆盘从%c盘移动到%c盘\n", number, original, target);
39 }