我被要求从一个递归函数中形成一个递归方程,并将其求解为T(n)。此函数将?个元素的数组分为两半;找到每个一半的最大值,然后返回两个中的最大值。但是,在理解如何从此函数形成递归方程时遇到了一些麻烦。
我在互联网上以及其他地方都看过类似的问题,据我所知,此函数执行两次递归调用,每次将数据分成2个,大小应为= n,但是我不确定函数中的其他元素以及如何正确编写它们。
?????ℎ???(?[], ????????, ????)
{
?? (???? == 1)
?????? A[????????];
???1 = ?????ℎMax(?[], ????????, ⌊????/2⌋);
???2 = ?????ℎMax(?[], ???????? + ⌊????/2⌋, ???? − ⌊????/2⌋);
if (???1 ≥ ???2)
?????? ???1;
????
?????? ???2;
}
答案 0 :(得分:1)
T(n)= 2T(n / 2)+ c
时间复杂度-O(n)
该函数对大小为n / 2的子数组进行2次递归调用,并不断进行工作