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

时间:2015-03-16 03:14:31

标签: java recursion

如果数组中至少有一个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));     
      }

  }

3 个答案:

答案 0 :(得分:5)

你非常接近,想象如果你的外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;
}

答案 1 :(得分:1)

抱怨您的方法没有返回布尔值,因为如果i >= array.length您的方法没有返回任何内容。

答案 2 :(得分:0)

您缺少一个基本案例。如果你的i等于array.length你会想要返回false,因为你从未得到过0

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