我想知道如何处理在 c 中问题的许多不同“级别”中使用的过程的问题,最好以“惯用”方式。我知道我解释得不够好,所以让我举个例子:
考虑制作一个游戏求解器的一般问题,它应该打印最好的下一步动作。我认为它应该在一个for
循环中检查所有可能的动作,看看它是否是一个获胜的动作(在这一轮中)如果是,则返回移动,否则检查对手可以针对您的移动(for循环)进行的所有可能移动并调用该函数以再次找到最佳移动。
但是,我发现这种方法有一些限制,例如性能(程序将花费时间运行调用函数所需的样板代码等)和有限的灵活性,因为函数必须找到一种方法来与调用者沟通如何找到了一个很好的举动。也就是说,如果它可以做到的话。
bestmove()
{
for (;i<maxmove;i++)
{
if(checkifwinning(moves[i])) return;
for (;n<maxopponentmove;n++)
{
bestmove();
}
}
我已经和haskell 搞混了一段时间,所以我担心我的想法是寻求递归解决方案。我希望你能告诉我一种以'c native'方式编写这个函数的方法。