【汉诺塔】递归实现汉诺塔
代码
#include <iostream>
#include <cstdio>
using namespace std;
int cnt = 0;
void moving(int disk, char m, char n){
printf("第%d次c移动:把%d号圆盘从%c移动到%c\n", ++cnt, disk, m, n);
}
void hanoi(int n, char x, char y, char z){
if (n == 1) moving(1, x, z);
else {
hanoi(n-1, x, z, y);
moving(n, x, z);
hanoi(n-1, y, x, z);
}
}
int main() {
int n;
printf("请输入圆盘个数:\n");
scanf("%d", &n);
char x = 'x';
char y = 'y';
char z = 'z';
hanoi(n, x, y, z);
return 0;
}