Public class ListItem{
final int number;
ListItem next;
ListItem(int number, ListItem next) {
this.number = number;
this.next = next;
}
public int length() {
if(this.next != null){
this.next = this.next.next;
return 1 + this.length();
}
else return 0;
}
当我一直试图计算长度时,我的长度比预期长度低1。例如,如果长度为10,我会得到9.我该如何解决这个问题?
感谢。
答案 0 :(得分:1)
您的上一个值返回0,因为this.next为null。所以你要添加除最后一个元素之外的所有内容,因此你将返回长度-1。我来自Ruby背景,并且在10年内没有编程Java,但是下面会更像这样,语法可能会关闭。
此外,通常对于递归的东西,返回的基本情况将是函数的第一行。
Public class ListItem{
final int number;
ListItem next;
ListItem(int number, ListItem next) {
this.number = number;
this.next = next;
}
public int length() {
if(this.next == null){
return 1;
}
else {
return 1 + this.next.length;
}
}