How to sum elements in Node recursively in Java?

I am trying to summarize elements in node iteratively and recursively. I already wrote a program to make an iterative way, and I am having problems with how this can be done recursively.

code:

public int sumIterative() {
    Node newNode= new Node(item, next);
    int sum = 0;

    while(newNode != null){
        sum = sum + item;
        newNode = newNode.next;
    }
    return sum;
}

My desire for a recursive path:

public int sumRecursive() {
    Node newNode = new Node(item,next);
    int sum = 0;
    int result;
    if(newNode == null){
        result = 0;
    } else {
        return sumRecursive();
    }
    return sum;    
}

I am trying to do this using the logic "after that there are no nodes"

How can this be done recursively?

Edit

This is a public driver method, I can send all my code on request

public int sumRecursive() {
    int sum = 0;
    if (top != null) {
        sum = top.sumRecursive();
    }
    return sum;
}

class LinkedList {

    private class Node {
        public int item;
        public Node next;

        public Node(int newItem, Node newNext)  {
            item = newItem;
            next = newNext;
        }

        public int getItem() {
            return item;
        }

        public Node getNext() {
            return next;
        }

        public void setNext(Node newNext) {
            next = newNext;
        }

        // My Other Node methods

        // Recursively add up the numbers stored in this
        // and all the nodes after this.
        // Base case: there are no nodes after this.
        public int sumRecursive() {
            Node node = new Node(item,next);

            /*Node newNode = new Node(item,next);
            int sum = 0;
            if (null == newNode) {
                return sum;
            } else {
                sum += sumRecursive(newNode.next);
            }*/

            if (node == null) {
                return node.item;
            } else {
                return node.item + sumRecursive(node.next);
            }
        }

        // Iteratively add up the numbers stored in this
        // and all the nodes after this.
        public int sumIterative() {
            Node newNode= new Node(item, next);
            int sum = 0;

            while(newNode != null) {
                sum = sum + item;
                newNode = newNode.next;
            }
            return sum;
        }
    } // end class Node

    private Node top; // a pointer to the first node in the list (when it not empty)

    public LinkedList() {
        top = null; // empty list
    }

    // Insert a node at the front of the list
    public void insertAtFront(int newItem)  {
        top = new Node(newItem, top);
    }

    // Print out the list (10 numbers per line)
    public void printList() {
        int count = 1;
        Node curr;

        if (top == null) {
            System.out.println( "List is empty" );
        } else {
            curr = top;
            while (curr != null) {
                System.out.print( " " + curr.item );
                count++;
                if (count % 10 == 0) {
                    System.out.println();
                }
                curr = curr.next;
            }
            if (count % 10 != 0) {
                System.out.println();
            }
        }
    }

    // public driver method for sumRecursive
    public int sumRecursive() {
        int sum = 0;

        if (top != null) {
            sum = top.sumRecursive();
        }

        return sum;
    }

    // public driver method for sumIterative
    public int sumIterative() {
        int sum = 0;

        if (top != null) {
            sum = top.sumIterative();
        }

        return sum;
    }
} 
+4
source share
2 answers
public int sumRecursive() {
  return sumRecursive(top);
}    

public int sumRecursive(Node node){
  if (node == null) {
    return 0;
  }
  return node.item + sumRecursive(node.next);
}

// or to match your driver function

public int sumRecursive() {
  if (top == null) {
    return 0;
  } else {
    return top.sumRecursive();
  }
}    

// in Node class    
public int sumRecursive(){ 
  int sum = this.item;  
  if (this.next != null) {
    sum += this.next.sumRecursive();
  }
  return sum;
}
+3
source
    public int sumRecursive(Node node){
        if(node == null){
            return 0;
        }else{
            return node.item + sumRecursive(node.next);
        }   
    }
0
source

Source: https://habr.com/ru/post/1626905/


All Articles