Bool 方法返回错误值
Posted
技术标签:
【中文标题】Bool 方法返回错误值【英文标题】:Bool method returns wrong value 【发布时间】:2016-02-01 05:09:25 【问题描述】:我为链表哈希表创建了一个bool contains(string)
方法,该方法检查值是否在哈希中。我使用辅助函数进行递归,但是当辅助函数返回 false
时,bool 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);
【问题讨论】:
启用编译器警告(并阅读它们)可以防止这个错误。 【参考方案1】:很简单的一个。你忘了把'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)));
就个人而言,我更喜欢阅读您的六行。但是,其他人可能不同意,特别是因为它可以避免缺少返回语句的问题。
【讨论】:
以上是关于Bool 方法返回错误值的主要内容,如果未能解决你的问题,请参考以下文章
php curl常见错误:SSL错误、bool(false)