缺少退货声明(Java)

时间:2015-02-22 14:34:04

标签: java recursion

我想做的是;我已经给出了一个排序数组,如; 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;
}

3 个答案:

答案 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调用的结果。