如何通过两个函数处理返回值

时间:2015-08-10 19:21:04

标签: c recursion return

我有一个调用函数的程序,该函数又调用递归函数。

如何通过中间函数将递归函数的结果传递回主程序?

目前它将返回找不到的取决于我如何构造中间函数。在这种情况下,它每次都会返回'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;
    }
// }
}

1 个答案:

答案 0 :(得分:2)

您的binary_search函数未在所有实例中返回布尔值。

在您return -1的位置,您应该return false。同样,您return midpoint的位置应改为return true

编辑:

正如Vlad的评论中所提到的,你应该从0而不是1开始搜索,否则你将无法在列表的开头找到任何内容。