递归检查数组是否包含 0 (java)

recursively check if array contains 0 (java)

如果数组中至少有一个 0,我的方法应该 return 为真,否则为假。但是我的代码无法编译。为什么它抱怨我的方法不是 returning 布尔值?谁能帮忙?谢谢

  public boolean containsZero(int [] array, int i)
  {  

      if (i < array.length)
      {
          if (array[i] == 0)
             return true;
          else
           return containsZero(array, (i+1));     
      }

  }

抱怨你的方法没有 return 布尔值,因为如果 i >= array.length 你的方法没有 return 任何东西。

你非常接近,想象一下如果你的外部 if-condition 是假的会发生什么?

public boolean containsZero(int[] array, int i)
{  
  if (i < array.length)
  {
     if (array[i] == 0)
        return true;
     else
        return containsZero(array, i+1);     
  }
  return false;
}

您缺少一个基本案例。如果你的 i 等于 array.length 你会想要 return false 因为你从来没有达到 0

  if (i < array.length)
  {
      if (array[i] == 0)
         return true;
      else
       return containsZero(array, (i+1));     
  }
  else
  {
    return false;
  }