
这边是哪里有错误呢?运行之后就是空白的。用debug也是到输入之后的那一步就退出来了。
关注【以下回答由 GPT 生成】
问题原因是函数hanoi没有终止条件,导致递归无限深入,最终导致栈溢出进而程序异常退出。
为了解决这个问题,需要在递归函数中添加一个终止条件,当n为1时停止递归。修改后的代码如下:
#include<iostream>
using namespace std;
void move(char X, int n, char y) {
cout << "第" << n << "个" << X << "-->" << y << endl;
}
void hanoi(int n, char X, char y, char z) {
if (n == 1) {
move(X, n, z);
} else {
hanoi(n-1, X, z, y);
move(X, n, z);
hanoi(n-1, y, X, z);
}
}
int main() {
int m;
cout << "请输入方块数目:";
cin >> m;
hanoi(m, 'x', 'y', 'z');
return 0;
}
这样修改后的代码就可以正确运行了。