Формирование рекурсивного уравнения из функции - PullRequest
0 голосов
/ 11 июля 2019

Меня попросили сформировать рекуррентное уравнение из рекурсивной функции и решить его для T (n).Эта функция делит массив из ? элементов на две половины;найти наибольшее значение каждой половины, а затем возвращает наибольшее из двух.Однако у меня возникли некоторые затруднения с пониманием того, как из этой функции составить рекуррентное уравнение.

Я рассматривал некоторые подобные вопросы здесь и в других местах в Интернете, и, как мне кажется, я понял эту функциювыполняет два рекурсивных вызова и разбивает данные на 2 каждый раз, а размер должен быть = n, однако я не уверен относительно других элементов функции и того, как правильно их записать.

?????ℎ???(?[], ????????, ????)
{  
 ?? (???? == 1)  
 ?????? A[????????];  

  ???1 = ?????ℎMax(?[], ????????, ⌊????/2⌋); 
  ???2 = ?????ℎMax(?[], ???????? + ⌊????/2⌋, ???? − ⌊????/2⌋); 

  if (???1 ≥ ???2)  
  ?????? ???1;  
  ????  
  ?????? ???2;  
}

1 Ответ

1 голос
/ 11 июля 2019

T (n) = 2T (n / 2) + c

Сложность времени - O (n)

Функция выполняет 2 рекурсивных вызова для подмассивов размера n / 2 и постоянно работает

...