在codingbat上进行递归练习

时间:2016-10-30 18:19:08

标签: java arrays recursion

我目前正在codingbat网站上进行练习,其中说:

  

给定一个int数组,如果数组包含6,则递归计算。   我们将使用仅考虑数组部分的约定   从给定的索引开始。通过这种方式,递归调用可以通过   index + 1向下移动数组。初始调用将在索引中传递为   0

示例:

array6([1,6,4],0)→true

array6([1,4],0)→false

array6([6],0)→true

我的解决方案如下,但出于某种原因,当我的if(nums[index] == 6)为真时,它仍会执行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;
}

3 个答案:

答案 0 :(得分:4)

返回递归收到的值。改变

array6(nums,index+1);

类似

return array6(nums,index+1);

答案 1 :(得分:0)

left Join

答案 2 :(得分:0)

检查我的答案是否满足您的问题

public boolean array6(int[] nums, int index) {
  if(nums.length == 0 || index > nums.length-1){
    return false;
  }
  if(nums[index] == 6){
    return true;
  }

  return array6(nums,index+1);
}