我尝试了许多编码来解决下面的问题,但也找不到答案。任何人都可以帮我解决我的问题并告诉我错误的编码在哪里?
/** 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
答案 0 :(得分:3)
也许这样想是有帮助的:当前节点的节点数为1加上计算其余节点的结果。
答案 1 :(得分:1)
让我们创建一个名为countNodes(Node node)
node
为null
,则表示没有更多节点,因此count = 0 假设您有一个列表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”值再次调用你的函数。显然,为了能够使用递归来解决这个问题,应该有可能从当前节点移动到下一个节点。