gpt4 book ai didi

c++ - 我的递归函数有什么问题?

转载 作者:行者123 更新时间:2023-11-28 03:57:49 27 4
gpt4 key购买 nike

所以我正在尝试实现一个递归函数来生成整个 Tic-Tac-Toe 游戏树,但我似乎无法让它工作。

   void BuildTree(Node& nNode, const int& nextPlayer)
{
//Copy last board
Ticboard tBoard = nNode.m_board;
do
{
//Return first valid move
int validMove = tBoard.FirstValidMove();
if (validMove != -1)
{
Node f;
Ticboard tempBoard = nNode.m_board;
tempBoard.Move(validMove, nextPlayer);
tBoard.Move(validMove, nextPlayer);
f.m_board = tempBoard;
f.m_winCount = 0;
nNode.m_branches.push_back(f);
int currPlay = (nextPlayer == 1 ? 2 : 1);
BuildTree(f,currPlay);
}
else
{
break;
}
}while(true);
}

实际功能有效,我已经完成并调试它并且它显示它按预期工作,但是当我查看在 Visual Studios 中生成的节点(顺便说一句,对于 Tic-Tac-Toe)通过断点,它只显示前 9 个分支。我知道生成了更多,因为它需要几秒钟,并且我添加了一个计数器。

下面是我调用代码的方式:

    Ticboard lol;
Node startTree;
startTree.m_board = lol;
int startPlay = 1;
BuildTree(startTree, startPlay);

如果不在此处复制我所有的位板代码和诸如此类的东西,您能立即看出逻辑上的任何错误吗?

最佳答案

            nNode.m_branches.push_back(f);

这将 push_back 节点 f 的拷贝,因此 nNode.m_branches 中的内容与以后对 f 的修改无关上。

关于c++ - 我的递归函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2746072/

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