简体   繁体   English

我的递归有什么问题? 尝试在每次遍历中添加两个节点

[英]What's wrong with my recursion? Trying to add two node in each traversal

Seems like my linear linked list didn't connect for each recursion.似乎我的线性链表没有为每次递归连接。 Need explanation why my code doesn't work.需要解释为什么我的代码不起作用。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */


public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if(l1 == null)
            return null;
        int val = l1.val + l2.val;
        ListNode newNode = new ListNode(val);
        System.out.println(newNode.val);
        return newNode.next = addTwoNumbers(l1.next, l2.next);
    }
}

Your input您的输入

[2,4,3] [5,6,4] [2,4,3] [5,6,4]

Your stdout你的标准输出

7 10 7 7 10 7

Your answer你的答案

[] []

Expected answer预期答案

[7,10,7] [7,10,7]

I think that you didn't return newNode.next .我认为你没有返回newNode.next You must call recursion method with newNode.next but you must return newNode .您必须使用 newNode.next 调用递归方法,但必须返回newNode Ps.附言。 Remember to add if (l2==null) return null;记得加上if (l2==null) return null;

Change改变

return newNode.next = addTwoNumbers(l1.next, l2.next);

To

newNode.next = addTwoNumbers(l1.next, l2.next);
return newNode

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM