二维递归

时间:2012-12-01 19:27:28

标签: java data-structures recursion

我正在为一个类实现二维数据结构。我想要的方法是一个“NxN”对象数组。

所以,

    Cell[][] dataStructure = new Cell[N][N];

我目前的问题是,我对递归非常生疏。每个单元依赖于它左边的单元格的输出,以及它上面的单元格的输出,以创建它的输出。

Example of 2-D structure and how the outputs flow into the next cells

示例:

  

假设标准的X,Y方向,我希望能够打电话给   单元格的getOutputX方法,Cell [X] [Y],它将递归   调用Cell [X-1] [Y]的getOutputX和Cell [X] [Y-1]的getOutputY直到   它到达阵列的边缘。此时,输出会   传播通过数组返回并返回所需的输出   细胞

当我写出来的时候,随着我的进展,我会更加了解,而且我觉得我非常接近。任何有用的输入或提示将不胜感激。

我的具体问题是如何创建一个getOutput方法,该方法将从上面的单元格和所需输出左侧的单元格中获取所需的输入。

1 个答案:

答案 0 :(得分:2)

算法非常简单:

int getOutput(x, y) {
    if (x == 0 || y == 0) {
        return hardCodedInput(x, y);
    }
    int leftOutput = getOutput(x - 1, y);
    int topOutput = getOutput(x, y - 1);
    return logicGate(x, y).applyLogic(leftOutput, topOutput);
}