Java 递归方法的麻烦

Java 递归方法的麻烦,java,arrays,recursion,Java,Arrays,Recursion,作为CSA类练习的一部分,我们必须编写一个方法,用于查找int数组中是否存在6,并返回相应的布尔值。如果数组中的第一个数字是6,那么我编写的方法可以工作,但如果不是6,则不能工作。为什么? 注意:必须递归地执行问题是您没有触发递归,因为在代码中没有任何地方返回方法本身的结果。将在条件为true时执行的if语句的内容重写如下将使其按预期工作: public static boolean array6(int[] nums, int index) { if(nums.length >

作为CSA类练习的一部分,我们必须编写一个方法,用于查找int数组中是否存在6,并返回相应的布尔值。如果数组中的第一个数字是6,那么我编写的方法可以工作,但如果不是6,则不能工作。为什么?


注意:必须递归地执行

问题是您没有触发递归,因为在代码中没有任何地方返回方法本身的结果。将在条件为
true
时执行的
if语句
的内容重写如下将使其按预期工作:

public static boolean array6(int[] nums, int index) {
    if(nums.length > index+1) 
    {
        if(nums[index] == 6)
            return true;
        else
            array6(nums,index+1);
    }
    else if(nums.length==index+1)
    {
        if(nums[index] == 6)
            return true;
        else
            return false;
    }
    return false;
}
但总的来说,您的函数包含很多问题。您的任务非常简单,但您正在以极其复杂的方式对其进行编码。为了达到同样的效果,您可以使用很多内置函数。。。即使您不想使用它们,一个简单的
for循环
也可以:

if (nums.length > index_next) 
{
    if (nums[index] == 6)
        return true;

    // you have to return the result of the function here
    // in order to obtain an effective recursion, otherwise the
    // method is called but it's output value is ignored and the
    // functions goes outside the scope of the if statement
    // reaching the "return false" located at the bottom
    return array6(nums, index_next);
}
紧凑的解决方案

public static boolean array6(int[] nums, int index)
{
    if (index == nums.length)
        return false;

    if (nums[index] == 6)
        return true;

    return array6(nums, index + 1);
}

忘了提到它必须递归完成mbI编辑了我的答案以提供递归实现:)
public static boolean array6(int[] nums, int index)
{
    if (index == nums.length)
        return false;

    if (nums[index] == 6)
        return true;

    return array6(nums, index + 1);
}
bool array6(int* array, int len, int index) {

    if (index == len) {
        return false;
    }

    return array[index] == 6 || array6(array, len, index + 1);

}