I want to sum up all the values of a linked list recursively but it doesn't work. It says:
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();
}
}
}
Here's a solution:
public class MyList{
private Element elements;
class Element{
private int value;
private Element next;
Element(int value) {
this.value = value;
}
public Element getNext() {
return next;
}
public int getValue() {
return value;
}
public void setNext(Element next) {
this.next = next;
}
public int sum() {
if (next == null) {
return value;
} else {
return value + next.sum();
}
}
}
public MyList(int data[]) {
Element prev = null;
for (int value : data) {
Element e = new Element(value);
if (prev == null) {
elements = e;
} else {
prev.setNext(e);
}
prev = e;
}
}
public int sum() {
return elements == null ? 0 : elements.sum();
}
public static void main(String args[]) {
MyList list = new MyList(new int[]{ 1, 2, 3});
System.out.printf("sum = %d\n", list.sum());
}
}