标准模板
void move(char pos1, char pos2)
{
printf("%c->%c ", pos1, pos2);
}
void Hanoi(int n, char pos1, char pos2, char pos3)// 1起始位置 2中转位置 3目标位置
{
if (n == 1)
{
move(pos1, pos3);
}
else
{
Hanoi(n - 1, pos1, pos2, pos3);//把n-1个盘中放到2
move(pos1, pos3);//把最下面的大盘放到目标位置
Hanoi(n - 1, pos2, pos1, pos3);//把放在2的n-1个盘中拿(n-1)-1去 1 位置
}
}
#include <stdio.h>
int main()
{
Hanoi(1, 'a', 'b', 'c');
printf("\n");
Hanoi(2, 'a', 'b', 'c');
printf("\n");
Hanoi(3, 'a', 'b', 'c');
printf("\n");
return 0;
}
输出:
a->c
a->c a->c b->c
a->c a->c b->c a->c b->c b->c a->c