这个递归函数如何工作?
我不明白这是如何工作的,在我看来,一旦得到答案,它就不会做任何事情。
Node* FindNode(Node *rootNode, int data)
{
if (!rootNode)
return NULL;
else
{
if (rootNode->data == data)
return rootNode;
else
{
FindNode(rootNode->left, data);
FindNode(rootNode->right, data);
}
}
}
I can't figure out how this works, to my mind, once it gets to the answer it doesn't do anything with it.
Node* FindNode(Node *rootNode, int data)
{
if (!rootNode)
return NULL;
else
{
if (rootNode->data == data)
return rootNode;
else
{
FindNode(rootNode->left, data);
FindNode(rootNode->right, data);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
事实并非如此。它应该是:
注意额外的 return 语句和额外的 else if 子句。
编辑 - 总结以下评论:您发布的代码可以工作的唯一原因是编译器实现细节和测试数据的奇怪组合是否对您有利。您绝对应该解决问题,而不是保持代码原样。
It doesn't. It should be:
Note the extra return statements, and the extra
else if
clause.EDIT — To sum up the comments below: The only reason the code you posted could be working is if an odd combination of compiler-implementation details and test data came together in your favour. You should definitely fix the problem rather than keeping the code how it was.
这是假设 FindNode 在第一次匹配时返回。
This is assuming that the FindNode returns on the first match.