我有一个调用函数的程序,该函数又调用递归函数。
如何通过中间函数将递归函数的结果传递回主程序?
目前它将返回找不到的或取决于我如何构造中间函数。在这种情况下,它每次都会返回'found'。我知道二进制搜索功能正在运行,尽管返回搜索功能可能会出错。
来自主程序的电话:
if (search(value, array, size))
{
printf("\nFound!\n\n");
return 0;
}
else
{
printf("\nDidn't find.\n\n");
return 1;
}
搜索功能:
bool search(int value, int values[], int n)
{
if(binary_search(value, values, ((n - n) + 1), n))
{
return true;
}
else
{
return false;
}
}
递归函数:
bool binary_search (int key, int array[], int min, int max)
{
if (max < min)
{
return -1;
}
int midpoint = (min + max)/2;
// {
if (array[midpoint] > key)
{
return binary_search (key, array, min, midpoint-1);
}
else if (array[midpoint] < key)
{
return binary_search (key, array, midpoint+1, max);
}
else if (array[midpoint] == key)
{
return midpoint;
}
else
{
return false;
}
// }
}
答案 0 :(得分:2)
您的binary_search
函数未在所有实例中返回布尔值。
在您return -1
的位置,您应该return false
。同样,您return midpoint
的位置应改为return true
。
编辑:
正如Vlad的评论中所提到的,你应该从0而不是1开始搜索,否则你将无法在列表的开头找到任何内容。