Если заявление не признавая истинные условия?

У меня проблемы с этим алгоритмом двоичного поиска. Вот объяснения переменных.

значение: число, которое ищется в массиве

values ​​[]: массив, который ищется

n: количество элементов в массиве

high: самый высокий элемент (с нулевой индексированной позицией) части искомого массива

low: самый низкий элемент (с нулевой индексированной позицией) часть массива, в которой выполняется поиск

Моя проблема не в рекурсии. Часть искомого массива сосредотачивается вокруг «значения» и условий, указанных ниже. проблема в том, что мои заявления if, кажется, не признают, что они есть. Я знаю, что условия выполняются, потому что когда я распечатываю значения [high], values ​​[middle] и values ​​[low] для каждой рекурсии, это показывает, что они есть.

int search(int value, int values[], int n, int high, int low)
 {   
   if (n <= 0)
   {
    return 1;
   }

   int middle = (high + low) / 2;

     ///condition #1
   if (value == values[middle])
   {
     return 0;
   }

   //conditions #2 and #3 (account for the maxes and mins of the array because the operation to find middle truncates)
  else if ( values[middle]==values[low] || values[middle]==values[high])
    {
     return 0;
    }

  else if (value > values[middle])
   {
        low = middle;
        search(value, values, n, high, low);
   }

  else if (value < values[middle])
   {
      high = middle;
      search(value, values, n, high, low);
   }

    return 2;
   } 

Что здесь не так?

Ответы на вопрос(2)

Ваш ответ на вопрос