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