#include <stdio.h>
#include <stdlib.h>
void mov(int n, char x, char y, char z);
int main()
{
char x, y, z;
x = 'x';
y = 'y';
z = 'z';
printf("Please input the hanoi tower number\n");
int n;
scanf("%d", &n);
mov(n, x, y, z);
}
/*
* 将全部盘从X,借助Y,移到Z
* 1. 当n=1时,直接移动到目标顶针
* 2. 当n>2,分为以下三步
* - 将n-1个盘移到Y,借助Z
* - 将第n个盘移到Z,
* - 将n-1个盘从Y移到Z,借助X
*/
void mov(int n, char x, char y, char z) {
if (1 == n) {
printf("%c --> %c\n", x, z);
}
else {
mov(n - 1, x, z, y);
printf("%c --> %c\n", x, z);
mov(n - 1, y, x, z);
}
}
网友评论