【发布时间】:2018-07-04 10:59:44
【问题描述】:
下面是我编写的一个递归函数,用于在链表的末尾添加一个节点。谁能告诉这个功能是否正确?
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; }
}
【问题讨论】:
-
何不运行看看
-
递归是描述一些上下文的好概念,然后是设计算法 - 但不是在这里。尝试像人一样说不自然的语言:这里没有什么是递归的
-
提示:数据结构编程的一个基本部分是测试实现。理想情况下,您在甚至编写生产代码之前编写测试用例......认真:要求其他人审查您的代码应该像你做的最后件事......在那之前,您自己做了很多事情来回答这个问题。 (询问是可以的,但这个社区并不适合此类问题)。如前所述:你想学习这些东西。测试应该是您学习活动的基本部分!
-
老实说:上面甚至不应该编译。你可以有一个 return 语句而不给出值,但是你的方法签名说返回一个 Node 实例。抱歉,朋友,但在考虑将代码放在这里进行“审查”之前 - 确保它至少可以编译。
-
我投票结束这个问题,因为 Stack Overflow 既不是测试也不是代码审查服务。
标签: java algorithm recursion linked-list