Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归检查数组是否包含0(java)_Java_Recursion - Fatal编程技术网

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

递归检查数组是否包含0(java),java,recursion,Java,Recursion,如果数组中至少有一个0,我的方法应该返回true,否则返回false。但是,我的代码没有编译。为什么它抱怨我的方法没有返回布尔值?有人能帮忙吗?谢谢 public boolean containsZero(int [] array, int i) { if (i < array.length) { if (array[i] == 0) return true; else

如果数组中至少有一个0,我的方法应该返回true,否则返回false。但是,我的代码没有编译。为什么它抱怨我的方法没有返回布尔值?有人能帮忙吗?谢谢

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

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

  }

它抱怨你的方法不返回布尔值,因为如果i>=array.length,你的方法不返回任何值。

它抱怨你的方法不返回布尔值,因为如果i>=array.length,你的方法不返回任何值。

你非常接近,想象一下,如果外部条件为假,会发生什么

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;
}

你很接近,想象一下如果你的外部条件是假的会发生什么

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,您将希望返回false,因为您从未得到0

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

你错过了一个基本案例。如果您的i等于array.length,您将希望返回false,因为您从未得到0

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