递归之汉诺塔
代码
#include <stdio.h>
int c = 0;
void move(char x, int n, char z)
{
printf("第 %d 步: 将 %d 号盘从 %c 移到 %c\n", ++c, n, x, z);
}
void hanoi(int n, char x, char y, char z)
{
if (n == 1)
move(x, 1, z);
else
{
hanoi(n-1, x, z, y);
move(x, n, z);
hanoi(n-1, y, x, z);
}
}
int main()
{
int n;
printf("3个塔 a, b, c,最初圆盘在a, 中间盘b, 目标盘c.");
printf("输入圆盘数:");
fflush(stdout);
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}