gpt4 book ai didi

c - 使用递归在 C 中的格上进行自回避随机游走 - 内存分配

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

我想通过使用递归函数来计算(对于一个项目)自回避随机游走。我已经成功地使用两个数组 StepXStepY 来实现这一点,它们分别跟踪路径的 x 和 y。递归函数类似于:

go(int x, int y, int n,int* StepX,int* StepY)

可以概括为“对于第 n 步,请记住您已经在 StepX 和 StepY 中”。

该项目已完成,我很高兴,但我想知道如何使用(也)格子使其工作,用 1 和 0 描述访问/尚未访问的位置,以提高其速度。

我认为将功能扩展为

go(int x, int y, int n,int* StepX,int* StepY, int* lattice)

将是我正在寻找的,因为我认为每次调用函数go时,它都会创建一个新的网格副本并使用它。但显然情况并非如此,因为在探索了一个方向之后(并且在达到允许的最大递归级别之后),进入较低级别的递归,格子仍然是相同的,访问的位置(更深的级别)标记为 ,而我希望递归的每个级别都在晶格的不同副本上工作。

这是一个错误的期望吗?这只是一个错误的实现吗?有什么建议可以减少这种方法所需的内存大小吗?

我的代码(实际上大部分都不是我写的)可以在这里找到:https://gist.github.com/4144833

请耐心等待,我不是一个经验丰富的程序员。

最佳答案

不,您误解了 C 中的参数规则。递归调用复制的是指向格子的指针,而不是格子数组本身。你必须自己做这件事。

最简单的方法是在调用开始时分配一个新数组(使用malloc),使用memcpy复制数据,然后free 递归调用结束时的数组。

关于c - 使用递归在 C 中的格上进行自回避随机游走 - 内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554621/

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