布尔方法返回错误值

罗曼·洛佩兹(Roman Lopez)

bool contains(string)为链接列表哈希表创建了一个方法,方法检查哈希中是否有值。我使用辅助函数进行递归,但是当辅助函数返回时falsebool contains(string)仍然返回true。我通过调试器运行它,我可以清楚地看到它返回false,但我不确定为什么。

这是正在搜索的当前节点:

"laccoliths"->"morbiferous"->"oculi"->"unscabbarded"

我要寻找的值是"typung"

这是代码:

bool contains_h(string x, node * p) //helper method
{
    if (p == NULL)
        return false;
    else if (x == p->data)
        return true;
    else
        contains_h(x, p->next);
}

bool contains(string word) { return contains_h(word, head); }

安德鲁·谢泼德

好简单的一个。您忘记在最终声明上加上“ return”:

bool contains_h(string x, node * p) //helper method
{
    if (p == NULL)
        return false;
    else if (x == p->data)
        return true;
    else
        return contains_h(x, p->next);
}


出于好奇,我将您的代码重写为单行代码,以查看其外观:

bool contains_h(string x, node * p) //helper method
{
    return ((p!=NULL) && (x == p->data || contains_h(x, p->next)));
}

我个人希望阅读您的六行内容。但是,其他人可能会不同意,特别是因为这样可以避免遗漏的return语句问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章