我想通过使用递归函数来计算(对于一个项目)自我避免的随机游走。我已经设法用两个数组来做到这一点,StepX
并StepY
分别跟踪路径的 x 和 y。递归函数类似于:
go(int x, int y, int n,int* StepX,int* StepY)
这可以总结为“对于第 n 步去 (x,y) 记住你已经在 StepX 和 StepY”。
该项目已完成,我很高兴,但我想知道如何使用(也)格子使其工作,1 和 0 描述已访问/尚未访问的位置,以提高其速度。
我认为将功能扩展为
go(int x, int y, int n,int* StepX,int* StepY, int* lattice)
将是我正在寻找的,因为我认为每次go
调用该函数时,它都会创建一个新的晶格副本并使用它。但显然情况并非如此,因为在探索了一个方向之后(并且在达到允许的最大递归级别之后),进入较低级别的递归,格仍然是相同的,访问位置(的更深层次)标记,而我希望递归的每个级别都在不同的格子副本上工作。
这是一个错误的期望吗?这只是一个错误的实现吗?有什么建议可以减少这种方法所需的内存大小吗?
我的代码(其实我大部分都没写)可以在这里找到:https ://gist.github.com/4144833
请耐心等待,我不是经验丰富的程序员。