Both of these approaches are correct. It is indeed legal to have several recursive calls from a function, and the point is that what you think is just one call, then the next, then the next, etc.
, , . , , () , . , :
T(1) = 1
T(2) = 1
T(n) <= T(n / 2) + T(n / 2 + 1) + 1
" ", , , .
, T (n) < = max {cn + d, a} c, d a. , T (n) = O (n) , , . ,
T(1) = 1
T(2) = 1
a = 1. . -, , (n/2) <= 2 (n/2 + 1) <= 2:
T(n) <= T(n / 2) + T(n / 2 + 1) + 1
<= 1 + 1 + 1
<= 3
, cn + d >= 3, n = 3 n = 4, . , , 3c + d >= 3 4c + d >= 3.
, , (n/2) <= 2 (n/2 + 1) >= 2. ,
T(n) <= T(n / 2) + T(n / 2 + 1) + 1
<= 1 + max{c(n / 2 + 1) + d, 1} + 1
<= 2 + max{c(n / 2 + 1) + d, 1}
<= 3 + c(n / 2 + 1) + d
, 3 + c (n/2 + 1) + d <= cn + d, . , , n = 5, , ,
3 + c(n / 2 + 1) + d <= cn + d
3 + c(n / 2 + 1) <= cn
3 + c(5 / 2 + 1) <= 5c
3 + 5c/2 + c <= 5c
3 + 7c/2 <= 5c
4 <= 3c / 2
8 / 3 <= c
, , c >= 8/3.
, , , n/2, n/2 + 1 :
T(n) <= T(n / 2) + T(n / 2 + 1) + 1
<= c(n / 2) + d + c(n / 2 + 1) + d + 1
<= cn / 2 + cn / 2 + c + 2d + 1
= cn + c + 2d + 1
, cn + d,
cn + c + 2d + 1 <= cn + d
c + 2d + 1 <= d
c + d + 1 <= 0
, d = -c - 1.
, 3c + d >= 3, , 2c - 1 >= 3, 2c >= 4, c >= 2. , 4c + d >= 3, , c >= 2. c = 8/3, , d = -11/3,
T(n) <= max{8n/3 - 11/3, 1}
, T (n) = O (n), .
, , . - , .:-) , , . , O (n).