forestelk 2018-11-15 05:53 采纳率: 50%
浏览 396
已采纳

请大佬们看看为什么错了,谢谢大佬,小白感激不尽,运行的时候感觉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;

}

  • 写回答

3条回答 默认 最新

  • threenewbee 2018-11-15 06:05
    关注

    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又会再递归,永远遇不到跳出递归的情况。
    肯定是堆栈溢出了。

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?