【问题标题】:Java recursion - will this work?Java 递归——这行得通吗?
【发布时间】:2014-09-30 12:09:50
【问题描述】:
private void formatLines() {

    for (LineViewItem line:lineItems) {

        if (line.inLineItems.get(0).word.getText().equals(" ")) {

            line.inLineItems.remove(0); formatLines();

        }

        if (line.inLineItems.get(line.inLineItems.size()-1).word.getText().equals(" ")) {

            line.inLineItems.remove(line.inLineItems.size()-1); formatLines();

        }
    }
}

如果条件为true,以上是我想用来删除lineItems ArrayList 中每个line 的第一个或最后一个对象的方法。删除项目后,我想重复此过程并检查lineItems 中每个line 的第一个和最后一个位置是否有另一个对象true 条件。这就是递归调用此方法的原因。这是否按预期工作?我怀疑这是否正确。

【问题讨论】:

  • will this work? 你运行这个了吗?
  • 你的单元测试说明了什么?
  • 是的,但我不确定它是否真的像我认为的那样有效
  • 令人难以置信的 java 递归
  • 为此使用线性结构而不是递归。类似while (line.inLineItems.get(0).word.getText().equals(" ")) { line.inLineItems.remove(0); }

标签: java recursion methods


【解决方案1】:

我猜它不会起作用。

如果一行有一个只有一个元素的 lineItem,如果你在第一个 if 块中删除,当你进入第二个 if 块时,你会到达

line.inLineItems.get(line.inLineItems.size()-1)

line.inLineItems.size() 将为 0,您将获得 ArrayIndexOutOfBoundsException。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多