2015-10-10 6 views
2

Мне дан отсортированный массив, имеющий различные элементы.Проверьте, есть ли у Сортированного массива A [i] = i, используя Divide и Conquer

Вернуться true if A[i] = i

else return false; 

я обязан просто вернуть истинным или ложным, а не позицию.

Я внедрил код, но есть некоторые незначительные ошибки.

private static boolean find(int[] a, int low, int high) 
{ 
    System.out.println(Arrays.toString(a)+" "+low+ " "+high); 
    if(low<=high) 
    { 
     int mid = (low+high)/2; 

     if(mid==a[mid]) 
     { 
      return true; 
     } 
     else if(a[mid]>mid) 
     { 
      find (a,low,mid-1); 
     } 
     else{ 
      find (a,mid+1,high); 
     } 

    } 

    return false; 


} 

Я знаю, что он достигает return false, даже если он нашел в середине.

Какие изменения следует внести, чтобы он возвращался true во всех случаях.

ответ

3

Где вы рекурсивный вызов находки, вы должны вернуться перед вызовом находки так, что он будет возвращать результат вложенного вызова

return find(...) //etc.. 
+0

О Боже мой .. спасибо: D –

 Смежные вопросы

  • Нет связанных вопросов^_^