Bool 方法 returns 错误的值
Bool method returns wrong value
我为链表散列 table 创建了一个 bool contains(string)
方法,它检查一个值是否在散列中。我使用了一个辅助函数来递归,但是当辅助函数returnsfalse
时,bool contains(string)
仍然returns为真。我通过调试器 运行 它可以清楚地看到它 returns 错误,我不确定为什么。
这是当前正在搜索的节点:
"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 语句问题。
我为链表散列 table 创建了一个 bool contains(string)
方法,它检查一个值是否在散列中。我使用了一个辅助函数来递归,但是当辅助函数returnsfalse
时,bool contains(string)
仍然returns为真。我通过调试器 运行 它可以清楚地看到它 returns 错误,我不确定为什么。
这是当前正在搜索的节点:
"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 语句问题。