3

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

所以,

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

我目前的问题是我对递归非常生疏。每个单元依赖于其左侧单元的输出,以及其上方单元的输出来创建其输出。

二维结构示例以及输出如何流入下一个单元格

例子:

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

当我写下这篇文章时,我理解得更多,我觉得我很接近。任何有用的输入或提示将不胜感激。

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

4

1 回答 1

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);
}
于 2012-12-01T20:08:06.753 回答