我想做的是;我已经给出了一个排序数组,如; 1,1,1,2,2,3。 然后我给了一个这样的数字; 6。 然后我试图找到最小数量的数组元素,我必须求和才能找到这个数字。 我从数组的末尾开始求和元素。 答案应该是3,因为我在数组中使用了3个项目来总结...
3 + 2 + 2(从结束开始)> = 6.
如果所有总和仍然不大于给定数字,我返回(-1)表示我永远无法达到给定数字。
My Recursive函数如下,但我收到“Missing Return Statement”错误。如何解决给定问题的问题。
public static int findIt(int[] arr, int index, int min)
{
if(index >=0)
{
int calc=0;
int counter=0;
for(int from = arr.length-1 ; from>=index; from--)
{
calc += arr[from];
counter++;
}
if(calc>=min)
return counter;
else
findIt(arr, --index, min);
}
else
return -1;
}
答案 0 :(得分:2)
而不是:
findIt(arr, --index, min);
从中返回值,如:
return findIt(arr, --index, min);
答案 1 :(得分:0)
缺失的回报应该在第findIt(arr, --index, min);
行
答案 2 :(得分:0)
您错过了return
:
public static int findIt(int[] arr, int index, int min)
{
if(index >=0)
{
int calc=0;
int counter=0;
for(int from = arr.length-1 ; from>=index; from--)
{
calc += arr[from];
counter++;
}
if(calc>=min)
return counter;
else
findIt(arr, --index, min); // <=== Here
}
else
return -1;
}
在return
前面放置findIt(arr, --index, min);
将返回findIt
的结果。
如果函数声明它返回一个值,则代码中的所有路径必须这样做。另外,要使此功能正常工作,您确实想要返回递归findIt
调用的结果。