如何在c ++中删除“非空函数结束”错误?

时间:2016-02-19 15:50:26

标签: c++ compiler-errors

我制作了一个具有以下功能的程序:

int f(long long int arr[], long long int x, long long int y)
{
    long long int i = x, j = y;
    if(lookup[i][j] == 0)
    {
        if(i == j)
            lookup[i][j] = arr[i];
        else
            lookup[i][j] = min(f(arr, i, j-1), arr[j]);
    }
    else
        return (lookup[i][j]);
}

min()也是一个已定义的函数。

当我编译代码时,它会抛出一个错误:

  

control reaches end of non-void function [-Werror=return-type]

我怎么可能删除此错误?

1 个答案:

答案 0 :(得分:2)

通过return声明值lookup[i][j]

返回一些值

例如,返回0因为我不知道要返回的正确值。

int f(long long int arr[], long long int x, long long int y)
{
    long long int i = x, j = y;
    if(lookup[i][j] == 0)
    {
        if(i == j)
            lookup[i][j] = arr[i];
        else
            lookup[i][j] = min(f(arr, i, j-1), arr[j]);
        return 0; /* add this line */
    }
    else
        return (lookup[i][j]);
}

或者,我猜函数应该是这样的:

int f(long long int arr[], long long int x, long long int y)
{
    long long int i = x, j = y;
    if(lookup[i][j] == 0)
    {
        if(i == j)
            lookup[i][j] = arr[i];
        else
            lookup[i][j] = min(f(arr, i, j-1), arr[j]);
    }
    /* remove else here */
    return (lookup[i][j]);
}