java中链表的递归和函数
我想递归地总结一个链表的所有值,但它不起作用。上面写着:
Cannot invoke "Element.sum()" because the return value of "Element.getNext()" is null
public class Element{
private int value;
private Element next;
}
public class MyList{
private Element elements;
public int sum(){
if (elements == null) return 0;
return elements.getValue() + elements.getNext().sum();
}
}
}
# 1 楼答案
sum
甚至不是Element
的方法,所以实现不应该编译我将根元素传递给一个可以递归的内部
sum
方法,并将no-argsum
方法保持为公共:# 2 楼答案
# 3 楼答案
因为你们似乎在尝试学习递归性,而且你们似乎真的在尝试,所以我不会在这里给你们一个完整的解决方案
首先,我认为您没有提供完整的代码,因为它没有编译。您正在调用
elements.getNext().sum()
,这意味着您在类元素上有一个sum()方法这实际上是一种可能的正确方法,在元素类中有一个sum方法,因为你希望递归性发生在每个元素上
因此,当您以这种方式开始时,应该继续尝试这种方式:在元素类上添加sum方法。这就是你可以做递归的地方。递归性意味着在另一个实例上或使用另一个参数再次调用同一个方法
另一个答案是可行的,但是你会仅仅通过复制它来学习递归性吗?我建议尝试做类似的事情,但是在元素类中,所以你可以自己做
# 4 楼答案
这里有一个解决方案: