【问题标题】:Keeping State of an array inside a recursive method在递归方法中保持数组的状态
【发布时间】:2016-06-14 11:18:47
【问题描述】:

有没有比通过递归方法传递数组更简单的方法,而不是将其转换为字符串并在方法内重新组装以保留该数组的前一个实例以供在游戏树中使用。

该方法只会循环直到达到所需的深度并冒泡直到所有可能的游戏状态都被映射。

示例c#:

public class Gametree
{
  private char[] mapArr;

  private void execute(char[] map){
    mapArr = map;

    //do stuff to mapArr//

    var child = new Gametree();
    child.execute(mapArr);
  }
}

【问题讨论】:

    标签: c# arrays recursion


    【解决方案1】:

    您想复制或克隆您的数组,而不是引用它。

    child.execute(mapArr.Clone());
    

    char[] secondMap = new char[mapArr.length]
    Copy(mapArr, secondMap, mapArr.length);
    child.execute(secondMap);
    

    【讨论】:

    • 或者 Array.Copy 和 Array.Clone 如此处所述stackoverflow.com/questions/198496/…
    • 我确实尝试过 child.execute(mapArr.toList().toArray());但是在某个地方它仍然会改变错误的实例:(
    • @Kortgat 使用克隆或复制,我不是 100% 确定 toListtoArray 的事情。
    • 谢谢,通过一些 Array.Copy() 的玩弄,我让它正常工作,节省了 30% 以上的处理时间:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2020-10-27
    • 1970-01-01
    • 2023-02-17
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多