gpt4 book ai didi

c++ - 如果找不到解决方案,如何离开递归循环而不打印任何内容?

转载 作者:行者123 更新时间:2023-11-30 05:14:14 25 4
gpt4 key购买 nike

我有一个游戏,游戏的重点是在 21 回合内找到解决方案。如果找不到解决方案,它应该输出“No solution”并在 main 中继续。如果有一个解决方案,它应该上升到堆栈并输出每一步(现在向后很好)。

当我找不到解决方案时,我想弄清楚如何在不打印任何东西的情况下离开我的堆栈。目前它将打印“21 回合内没有解决方案”。但随后仍然向上堆叠,打印每一步。当有解决方案时,它确实有效。

bool TabletStock(int _tablets, int _turns) {
if (_tablets == 18){
cout << "Found solution. I have exactly 18 tablets, with " << 21 - _turns << " moves left.\n";
return 1;
}

_turns++;

if (_turns >= 21){
cout << "No solution in 21 turns.\n";
return 0;
}

if (_tablets % 2 == 1){
TabletStock((++_tablets) / 2, _turns);
cout << "After incrementing, reduce " << _tablets << " by half to get " << _tablets / 2 << ".\n";
}
else if (_tablets % 3 == 0 && _tablets % 18 == 0){
TabletStock(_tablets / 3, _turns);
cout << "With " << _tablets << ", divide by 3 to get " << _tablets / 3 << ".\n";
}
else{
TabletStock((_tablets + 24), _turns);
cout << "With " << _tablets << ", add 24 to get " << _tablets + 24 << ".\n";
}
}

此时调用的函数是TabletStock(int, 0);

我一直在尝试在“if (_turns >= 21)”语句中做一些事情,因为它在打印所有步骤之前先打印出来,所以如果我在那个 if 语句中找到从堆栈中“中断”的方法,也许我可以让它不输出所有 cout 步骤。

最佳答案

当您调用 TabletStock() 时,它将返回 bool 值。每个打印件都应该用 if 语句包装。如果为假,则不打印。

例如,改变这个:

TabletStock((_tablets + 24), _turns);
cout << "With " << _tablets << ", add 24 to get " << _tablets + 24 << ".\n";

收件人:

if(TabletStock((_tablets + 24), _turns))
{
cout << "With " << _tablets << ", add 24 to get " << _tablets + 24 << ".\n";
}

关于c++ - 如果找不到解决方案,如何离开递归循环而不打印任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43526837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com