# JAVA recursive approach with the thought of adding 2 lists with the same length

• helper() is recursively adding 2 lists with the same length. the returned list contains the carryover value at the head which is either 0 or 1.

if l1 and l2 is not the same length then add nodes with 0 value to the head of either one to make them equal.

``````public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

ListNode node1 = l1;
ListNode node2 = l2;
while(node1 != null && node2 != null){
node1 = node1.next;
node2 = node2.next;
}

if (node1 != null)

ListNode temp = new ListNode(0);
temp.next = l2;
l2 = temp;
node1 = node1.next;
}

else

while (node2 != null){
ListNode temp = new ListNode(0);
temp.next = l1;
l1 = temp;
node2 = node2.next;
}

//now l1 length == l2.length

ListNode ret = helper(l1, l2);
if (ret.val == 0)
ret = ret.next;

return ret;

}

private ListNode helper(ListNode node1, ListNode node2){

if (node1 == null)
return null;

ListNode node = helper(node1.next, node2.next);

int val = node1.val + node2.val;

if (node != null)
val += node.val;

ListNode sum = new ListNode(val%10);

if (node != null)
sum.next = node.next;