#include <stdio.h>
void hanoi(size_t n , char a , char b , char c) {//将n个盘子的Hanoi塔最上面的n - 1个盘子从a柱运到b柱借助c柱
if ( n > 0 ) {
hanoi(n - 1 , a , c , b);//先将最上面的n - 1个盘子从a柱运到c柱借助b柱
printf("%c --> %c\n" , a , b);//再将a柱上剩下的一个盘子从a柱运往b柱,程序中该操作仅仅表示从变量a所代表的柱子
//移动最上面的一个盘子到变量b所代表的柱子
hanoi(n - 1 , c , b , a);//最后将c柱上的n - 1个盘子从c柱运往b柱借助a柱
}
}
int main() {
size_t n;
scanf("%u" , &n);
hanoi(n , 'a' , 'b' , 'c');//给柱子的名字赋为字符'a'、'b'、'c'
return 0;
}
测试数据:
3 input
a --> b output
a --> c
b --> c
a --> b
c --> a
c --> b
a --> b