汉诺塔

 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 }

 

posted @ 2021-12-12 23:44  吕辉  阅读(49)  评论(0)    收藏  举报