Java 递归函数,用于在链表末尾添加节点

Java 递归函数,用于在链表末尾添加节点,java,algorithm,recursion,linked-list,Java,Algorithm,Recursion,Linked List,下面是我编写的递归函数,用于在链表末尾添加节点。有人能告诉我这个功能是否正确吗 Node insertAtEnd(Node head, int data){ if(head.next == null){ Node temp= new Node(data); head.next= temp; return; } insertAtEnd(head.next,

下面是我编写的递归函数,用于在链表末尾添加节点。有人能告诉我这个功能是否正确吗

Node insertAtEnd(Node head, int data){  
     if(head.next == null){  
             Node temp= new Node(data);        
             head.next= temp;  
             return;  
        }  
 insertAtEnd(head.next, data);  
}
已经有一个名为Node的类,其定义如下:

class Node
    {
        int data;
        Node next;
        Node(int d) {data = d; next = null; }
    }

您的方法有一个
节点
返回类型,因此您应该返回新的
节点

Node insertAtEnd(Node head, int data) {  
    if (head.next == null) {  
        Node temp= new Node(data);        
        head.next= temp;  
        return temp;  
    }  
    return insertAtEnd(head.next, data);  
}


为什么不运行它,看看递归是一个很好的概念来描述一些上下文,然后设计算法——但不是在这里。试着像人们一样用自然语言说话:这里没有什么是递归的提示:编程数据结构的一个基本部分是测试实现。理想情况下,您甚至在编写产品代码之前就编写测试用例。。。严肃地说:让别人检查你的代码应该像你做的最后一件事一样。。。在那之前,你自己做了很多事情来回答这个问题。(提问是可以的,但这个社区并不适合这样的问题)。正如我所说的:你想学习这些东西。而测试应该是你学习活动中必不可少的一部分!老实说,上面的内容甚至不应该编译。您可以有一个return语句而不提供值,但您的方法签名表示返回一个节点实例。抱歉,朋友,在考虑在这里放置代码进行“审阅”之前,请确保它至少已编译。我投票将此问题作为主题外的问题结束,因为堆栈溢出既不是测试也不是代码审阅服务。@SambeetMandal如果我认为我的答案不正确,我不会发布它。当然,如果我是你,我会运行代码以确保它正常工作。谢谢你的回复。我想补充一点,为什么你要在if语句中返回temp?我认为设置链接应该很好。如果我错了,请纠正我。@SambeetMandal方法签名是由你提出的。您决定insert方法返回某个节点实例。Eran只是想解释一下。老实说,OP的最后一句话就是为什么我决定否决投票并结束这个问题。因为他不是在寻找答案,他是在寻找一位家庭教师教他家庭作业的细节。。。
Node insertAtEnd(Node head, int data) {  
    if (head.next == null) { 
        head.next = new Node(data);
        return head.next;  
    }  
    return insertAtEnd(head.next, data);  
}