@FaulerAffe
-

Как завершить рекурсивный алгоритм?

Нужно проверить, проходят ли все элементы массива условие cos(x[i]) > 0, при этом использовать рекурсивную функцию, каждый раз деля массив на две части - 1/3 и 2/3, проверяя сначала первую, потом, по необходимости, вторую. Прекращать рекурсию, когда осталось 1 - 2 элемента. Вот то, что я смог написать, при этом код условный, пока что функция ничего не возвращает, это всё очень примерно:
prov (double *a, int N, int border, int border2, flag, exit)
{
if (!exit)
    {
        if (N == border) {
              if (cos(a[N]) > 0) 
              { 
                    flag = true; 
              }
              else{
                   exit = true;
              }
        }
        if (!flag)
        {
            prov (a, (N - border)/3, border, N, flag, exit);
        }
        else
        {
            border++;
        }
    }
}


Ну вот дойду я до момента, когда у меня останется один элемент, его проверю, как мне остальные 2/3 проверить? Вот я надумал сдвигать левую границу, когда дохожу до этого элемента, но что делать дальше не пойму никак.
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы