@ricedragon: Легко представить это как двоичное дерево, растущее вниз.

#include <iostream>
using namespace std;

int g(float A[] , int L , int H)
{
   if (L==H)
      if (A[L] > 0.0)
         return 1;
      else 
         return 0;
   int M = (L+H)/2;

   return g(A,L,M)+ g(A,M+1,H);
}
int main (void)
{       
   float A[] = {-1.5 ,3.1,-5.2,0.0};
   g(A,0,3);

   system ("pause");
   return 0;
}

спрашивают, что возвращает функция g и что делает функция

вот что я получил до сих пор

первый вызов - это g (A, 0, 3) -пропустить оператор IF, и M = 1, так как это int-возврат g (A, 1,3) + g (A, 2 3)

второй вызов - g (A, 1,3) и снова оператор if - M = 0; - g (A, 2 3) пропустить оператор if еще раз - M = 2;

третий вызов -g (A, 0,0,) return 0 -g (A, 3,3) return 0;

так что просто вернуть 0?

и я предполагаю, что это деление среднего значения и какой-то бинарный поиск?

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

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