Строки, которые не имеют рекурсивных вызовов, выполняются в постоянное время, которое мы будем называть c.
T(n)=T(n-1)+c if n is odd.
T(n)=T(n/2)+c if n is even.
После каждого рекурсивного вызова с n нечетным следующим рекурсивным вызовом мы будем с n-1 дажеТаким образом, в худшем случае мы начинаем с нечетного n -> четное n-1 -> (n-1) / 2 нечетное -> (n-1) / 2-1 четное и так далее ...
Если, например, мы начинаем с n = 19, то 19 нечетное -> 18 четное -> 9 нечетное -> 8 четное -> 4 четное -> 2 четное -> 0.
Глубина рекурсивного дерева составляет около lgn, и, поскольку на каждом уровне есть c операций, время выполнения равно clgn = O (lgn).