How to solve the recurrence relation $T(n) = T(\lceil n/2\rceil) + T(\lfloor n/2\rfloor) + 2$ I'm trying to solve a recurrence relation for the exact function (I need the exact number of comparisons for some algorithm). This is what i need to solve:
$$\begin{aligned}
T(1) &= 0 \\
T(2) &= 1 \\
T(n) & = T(\lceil n/2\rceil) + T(\lfloor n/2\rfloor) + 2 \qquad(\text{for each $n\ge2$})
\end{aligned}$$
Without the ceiling and floor I know that the solution is $T(n) = 3n/2 -2$ if $n$ is the power of 2, but how can I solve it with them? (and for every $n$, not just $n$ that is the power of 2).
Thanks a lot.

As mentioned in comment, the first two conditions $T(1) = 0, T(2) = 1$ is incompatible with
the last condition
$$\require{cancel}
T(n) = T(\lfloor\frac{n}{2}\rfloor) + T(\lceil\frac{n}{2}\rceil) = 2\quad\text{ for }
\color{red}{\cancelto{\;\color{black}{n > 2}\;}{\color{grey}{n \ge 2}}}
\tag{*1}$$
at $n = 2$. We will assume the condition $(*1)$ is only valid for $n > 2$ instead.
Let $\displaystyle\;f(z) = \sum\limits_{n=2}^\infty T(n) z^n\;$ be the generating function
for the sequence $T(n)$. Multiply the $n^{th}$ term of $(*1)$ by $z^n$ and start summing from $n = 3$, we obtain:
$$\begin{array}{rrl}
&f(z) - z^2 &= T(3) z^3 + T(4) z^4 + T(5) z^5 + \cdots\\
&&= (T(2) + 2)z^3 + (T(2) + T(2) + 2)z^4 + (T(2)+T(3)+2)z^5 + \cdots\\
&&= (1+z)^2 ( T(2)z^3 + T(3)z^5 + \cdots) + 2(z^3 + z^4 + z^5 + \cdots)\\
&&= \frac{(1+z)^2}{z}f(z^2) + \frac{2z^3}{1-z}\\
\implies & f(z) &= \frac{(1+z)^2}{z}f(z^2) + z^2\left(\frac{1+z}{1-z}\right)\\
\implies & \frac{(1-z)^2}{z} f(z) &= \frac{(1-z^2)^2}{z^2}f(z^2) + z(1-z^2)
\end{array}
$$
Substitute $z^{2^k}$ for $z$ in last expression and sum over $k$, we obtain
$$f(z) 
= \frac{z}{(1-z)^2}\sum_{k=0}^\infty \left(z^{2^k} - z^{3\cdot2^k}\right)
= \left( \sum_{m=1}^\infty m z^m \right)\sum_{k=0}^\infty \left(z^{2^k} - z^{3\cdot2^k}\right)$$
With this expression, we can read off $T(n)$ as the coefficient of $z^n$ in $f(z)$ and get
$$T(n) = \sum_{k=0}^{\lfloor \log_2 n\rfloor} ( n - 2^k ) - \sum_{k=0}^{\lfloor \log_2(n/3)\rfloor} (n - 3\cdot 2^k)$$
For $n > 2$, we can simplify this as
$$\bbox[4pt,border: 1px solid black;]{
T(n) = 
n \color{red}{\big(\lfloor \log_2 n\rfloor - \lfloor \log_2(n/3)\rfloor\big)}
- \color{blue}{\big( 2^{\lfloor \log_2 n\rfloor + 1} - 1 \big)} 
+ 3\color{blue}{\big( 2^{\lfloor \log_2(n/3)\rfloor +1} - 1\big)}}\tag{*2}$$
There are several observations we can make.


*

*When $n = 2^k, k > 1$, we have
$$T(n) = n(k - (k-2)) - (2^{k+1} - 1) + 3(2^{k-1} - 1) = \frac32 n - 2$$

*When $n = 3\cdot 2^{k-1}, k > 0$, we have
$$T(n) = n(k - (k-1)) - (2^{k+1} - 1) + 3(2^k - 1) = \frac53 n - 2$$

*For $2^k < n < 3\cdot 2^{k-1}, k > 1$, the coefficient for $n$ in $(*2)$ (i.e the factor in red color) is $2$, while the rest (i.e those in blue color) didn't change with $k$.
So $T(n)$ is linear there with slope $2$.

*For $3\cdot 2^{k-1} < n < 2^{k+1}, k > 1$, the coefficient for $n$ in $(*2)$ is now 1.
Once gain $T(n)$ is linear there but with slope $1$ instead.


Combine these, we find in general
$$\frac32 n - 2 \le T(n) \le \frac53 n - 2 \quad\text{ for }\quad n > 2$$
and $T(n) = O(n)$ as expected. However, $\frac{T(n)}{n}$ doesn't converge to
any number but oscillate "between" $\frac32$ and $\frac53$.

Above is a picture ilustrating the behavior of $T(n)$. The blue pluses are the
value of $T(n) - (\frac32 n - 2)$ computed for various $n$. The red line
is $\frac{n}{6} = (\frac53 n - 2) - (\frac32 n - 2)$. As one can see, $T(n)$
doesn't converge to any straight line. Instead, it oscillate between 
lines $\frac32 n - 2$ and $\frac53 n - 2$ as discussed before.
