Analysis of Basic Recursive Functions
Set them up as recurrences. First, note that both just return $N$ characters $x$. Call the time taken by the first function for $N$ $A(N)$ and similarly $B(N)$ for the second. For the first version, the function calls itself with $\lfloor N / 2 \rfloor$ (I'm taking your language to be Java or similar, dividing integers truncates), and then concatenates some strings. As noted, $f(N)$ is just $N$ times 'x'. Consider teh different cases, and what work is done in each of them:

$$A(N) = \begin{cases}
            0                                           &amp; N = 0 \\
            A(\lfloor N / 2 \rfloor) + 2 \cdot N / 2   &amp; N &gt; 0 \wedge 2 \mid N \\
            A(\lfloor N / 2 \rfloor) + 2 \cdot (N - 1) / 2 + 1     &amp; \text{otherwise}
         \end{cases}$$

You see that both last cases simplify to just $A(\lfloor N / 2 \rfloor) + N$. Your recurrence is $A(N) = A(\lfloor N / 2 \rfloor) + N, A(0) = 0$

For the second one, you get $B(N) = B(\lfloor N / 2 \rfloor) + B(\lceil N / 2\rceil) + N, B(0) = B(1) = 0$