bool binsearch(string phrase, vector<string> words, int from, int to, int &test)
{
while (tf == "y") //tf is a global variable
{
int mid = (to+from)/2;
if (words[mid] == phrase) {tf = "t"; return true;}
if (mid == test) {tf = "f"; return false;}
if (words[mid] > phrase) {return binsearch(phrase, words, mid-1, to, mid);}
else {return binsearch(phrase, words, from, mid+1, mid);}
}
}
我正在努力使此二进制搜索工作。我需要整体函数返回“true”或“false”。我理解递归如何工作,直到第6行或第7行执行并且返回命令被调用。我已经完成了研究,似乎没有办法退出这个功能,它必须“放松”自己。 tf全局变量废话是这样的,它不会再次执行该机构,当它展开...但我仍然没有得到我想要的结果。递归&返回布尔值
基本上,我只是想离开的功能无论是回归后尽快真或返回假命令被调用,值返回到主函数相应
感谢
我怀疑你是这样做的学习目的?否则,你可以使用'std :: binary_search'。签名是否固定?使用基于迭代器的解决方案会更加优雅。 – 2011-04-14 07:59:29
你根本不需要循环,因此你也不需要全局变量。 – 2011-04-14 08:01:55
...和一个'const'引用而不是副本的向量。 – 2011-04-14 08:02:04