请大佬们看看为什么错了,谢谢大佬,小白感激不尽,运行的时候感觉i系统都要崩溃了

#include
#include
using namespace std;

void hannoi(int n, char A, char B, char C)
{
if (n == 1)
{
cout << "移动圆圈" << n << "从盘" << A << "到盘" << C << endl;
}
else
{
hannoi(n - 1, A, C, B);
cout << "移动圆圈" << n << "从盘" << A << "到盘" << C << endl;
hannoi(n - 1, B, A, C);
}
}

int main()
{
int n;
cin >> n;

hannoi(n, 'a', 'b', 'c');

system("pause");
return 0;

}

为什么这样就不行啊
#include
#include
using namespace std;

void hannoi(int n, char A, char B, char C)
{
(不讨论n为1的情况
hannoi(n - 1, A, C, B);
cout << "移动圆圈" << n << "从盘" << A << "到盘" << C << endl;
hannoi(n - 1, B, A, C);
}
}

int main()
{
int n;
cin >> n;

hannoi(n, 'a', 'b', 'c');

system("pause");
return 0;

}

void hannoi(int n, char A, char B, char C)
{
(不讨论n为1的情况
hannoi(n - 1, A, C, B);
cout << "移动圆圈" << n << "从盘" << A << "到盘" << C << endl;
hannoi(n - 1, B, A, C);
}
作为递归调用,必须要有终止递归的判断,你这么写,hannoi会无条件地调用hannoi,而内侧的hannoi又会再递归,永远遇不到跳出递归的情况。
肯定是堆栈溢出了。

既然你有正确的程序了,你就参考它吧。

建议还是多看看递归程序的终止条件,不然以后还是会遇到这样的问题。
递归程序终止必须有终止条件,不然,会一直调用。而计算机分配给一个程序的栈空间是有限的,所以,会崩溃。

你这程序没问题啊,你是不是输入的值太大,汉诺塔问题主要是学会用递归的方法解决问题,递归函数是没问题的,你用个位数测试一下。