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条)

报告相同问题?

悬赏问题

  • ¥50 请教 麒麟系统挂载怎么安装
  • ¥15 如何在ns3中实现路径的自由切换
  • ¥20 SpringBoot+Vue3
  • ¥15 IT从业者的调查问卷
  • ¥65 LineageOs-21.0系统编译问题
  • ¥30 关于#c++#的问题,请各位专家解答!
  • ¥15 App的会员连续扣费
  • ¥15 不同数据类型的特征融合应该怎么做
  • ¥15 用proteus软件设计一个基于8086微处理器的简易温度计
  • ¥15 用联想小新14Pro