关于codingbat的递归练习

Ous*_* D. 1 java arrays recursion

我目前正在codingbat网站上进行一项练习,内容为:

给定一个int数组,如果该数组包含6,则进行递归计算。我们将使用仅考虑以给定索引开始的数组部分的约定。这样,递归调用可以传递index + 1来向下移动数组。初始调用将索引传递为0。

例:

array6([1,6,4],0)?真正

array6([1,4],0)?假

array6([6],0)?真正

我的解决方案在下面,但由于某些原因,当我if(nums[index] == 6)为true时,它仍在else block.

我的问题:

从技术上讲,它不应在执行中的代码else block时执行中的代码if statement。那为什么会持续呢?

public static boolean array6(int[] nums, int index) { 

    if(nums.length == 0){
          return false;
    }

    if(index == nums.length-1 && nums[index] != 6){
          return false;
    }

    if(index == nums.length-1 && nums[index] == 6){
          return true;
    }

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

    }else{
           array6(nums,index+1);
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 5

返回您通过递归获得的值。更改

array6(nums,index+1);
Run Code Online (Sandbox Code Playgroud)

return array6(nums,index+1);
Run Code Online (Sandbox Code Playgroud)