gpt4 book ai didi

c - 如何在 c 中解决具有许多不同级别(它们是递归的)的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:29 24 4
gpt4 key购买 nike

我想知道如何处理在 c 中问题的许多不同“级别”中使用的过程的问题,最好以“惯用”的方式处理。我知道我解释得不够好,让我举个例子:

考虑制作游戏解算器的一般问题,它应该打印出最佳的下一步。我认为它应该在 for 循环中检查所有可能的 Action ,看看它是否是一个胜利move(in this round) 如果是,则返回 move,否则检查对手可以对付你 move 的每一个可能的 move(for 循环)并调用函数再次找到最佳 move。

但是,我发现这种方法有一些局限性,例如性能(程序将花时间运行调用函数所需的样板代码等)并且灵 active 有限,因为该函数必须找到一种方法来与调用者交流找到的移动有多好。也就是说,如果它可以完成的话。

bestmove()
{
for (;i<maxmove;i++)
{
if(checkifwinning(moves[i])) return;
for (;n<maxopponentmove;n++)
{
bestmove();
}
}

我已经和 haskell 混了一段时间了,所以恐怕我的想法是寻求递归解决方案。我希望你能告诉我一种用'c native'方式编写这个函数的方法。

最佳答案

C 语言允许递归函数。但是,它没有尾递归调用的概念(但在某些情况下,最近的 GCC 编译器能够将一些尾递归调用优化为纯迭代机器代码)。

编写递归函数时,应避免递归太深和本地调用帧太大(因此使用堆内存)。

关于c - 如何在 c 中解决具有许多不同级别(它们是递归的)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10314438/

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