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
汉若塔问题
最新推荐文章于 2022-07-25 21:45:08 发布