如何递归显示列表的元素?

时间:2018-12-03 22:35:34

标签: java recursion

我已经知道了,因此可以成功完成此操作,但是它也会打印空白列表消息,但我不太确定为什么?我仍在学习递归,因此如果我错过了一些简单的事情,我们深表歉意。

public void recursiveDisplayElements(MyList<Integer> m) {

    // -----------------------------
    // I. SCENARIO IDENTIFICATION
    // -----------------------------
    int scenario = 0;

    if (m.length() == 0) {

        scenario = 1;
    } else {

        scenario = 2;
    }
    // -----------------------------
    // II. SCENARIO IMPLEMENTATION
    // -----------------------------

    switch (scenario) {

    case 1:

        System.out.println("MyList is empty!");
        break;

    case 2:

        int e0 = m.getElement(0);
        m.removeElement(0);
        System.out.print(e0);
        recursiveDisplayElements(m);
        m.addElement(0, e0);

    }

}

2 个答案:

答案 0 :(得分:1)

在此递归函数中,每次列表不为空时,该函数将从其中移除一个元素并打印出来。 它将继续这样做,直到列表完全清空为止,并进入情况1,它将写入列表为空。

在递归函数中,案例1是停止案例,该案例总是在最后执行。

对不起,如果我的解释不清楚。

答案 1 :(得分:1)

由于您只能使用一种方法,因此也许可以实现它而无需从列表中删除并传递索引。 public void recursiveDisplayElements(MyList<Integer> m, int index)开始时,您将以列表和0作为索引来调用。如果index == 0 && m.size()== 0,则可以显示System.out.println("MyList is empty!");,否则可以打印m.getElement(index),然后调用recursiveDisplayElements(m, index++);直到index == m.size()-1)