我制作了一个具有以下功能的程序:
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]
我怎么可能删除此错误?
答案 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]);
}