返回bool的递归函数?

时间:2010-11-08 22:53:03

标签: c++

我想创建一个遍历树的递归函数,第一次条件命中时,我希望它返回。这会是正确的吗?

bool nodeExists(Node *root, Node *target)
{
    if(root == target)
    {
        return true;
    }

    for(int i = 0; i < root->nodes.size(); ++i)
    {            
        if(nodeExists(root->nodes[i],target)) {return true;}    
    }
    return false;
}

4 个答案:

答案 0 :(得分:3)

这很好,但我宁愿使用与“节点”不同的标识符。 “孩子们”很好,因为它清晰而明确。

答案 1 :(得分:1)

我认为你写的正确。你测试过吗?

答案 2 :(得分:0)

看起来不错。虽然你应该真的测试你的代码,但也许你有任何指针错误。 (非常依赖你的Node类......)

答案 3 :(得分:0)

这样可行,因为return语句会自动退出该函数。另一种方式是:

bool nodeExists(Node *root, Node *target)
{
    if(root == target)
    {
        return true;
    }

    bool returnValue = false; 

    for(int i = 0; i < root->nodes.size(); ++i)
    {
        if(nodeExists(root->nodes[i],target)) {returnValue = true; break;}
    }
    return returnValue;
}