编写一个递归方法,计算链接节点链中的节点数

时间:2010-09-09 08:29:21

标签: java recursion linked-list

我尝试了许多编码来解决下面的问题,但也找不到答案。任何人都可以帮我解决我的问题并告诉我错误的编码在哪里?

/** Task: Recusively counts the nodes in a chain.
* @param start the first node
* @returns the number of nodes in the linked chain */
public int countNodes(Node start)
{
if (start == null) 

// base case

{
  countNodes (Node start);

// recursive case
else

System.out.println (start.data);
return start.next;
}
} // end countNodes

3 个答案:

答案 0 :(得分:3)

也许这样想是有帮助的:当前节点的节点数为1加上计算其余节点的结果。

答案 1 :(得分:1)

让我们创建一个名为countNodes(Node node)

的递归函数
  1. 如果nodenull,则表示没有更多节点,因此count = 0
  2. 其他有1 + countNodes(node.next)
  3. 假设您有一个列表A-> B-> C-> D-> NULL

    countNodes(NodeA) = 1 + countNodes(NodeB)
    countNodes(NodeA) = 1 + (1 + countNodes(NodeC))
    countNodes(NodeA) = 1 + (1 + (1 + countNodes(NodeD)))
    countNodes(NodeA) = 1 + (1 + (1 + (1 + 0))))
    

    所以,4是我们的答案。

答案 2 :(得分:0)

在递归中,你不应该对下一个等式使用相同的参数,基本上,你应该做一些简单的计算,在你的情况下添加一个,然后用参数的“next”值再次调用你的函数。显然,为了能够使用递归来解决这个问题,应该有可能从当前节点移动到下一个节点。