Вы правы в первом случае, и ваши рассуждения верны.
Действительно, сложность O (logn) во втором случае. Вот один из способов обдумать это:
На каждом шаге рекурсии вы делите число на два, пока не достигнете базового варианта, равного единице. Таким образом, количество раз, которое эта функция вызывается, является количеством раз, которое вы можете разделить число на два, пока не достигнете одного, что по определению является именно log (n). Каждый раз, когда вы вызываете функцию, вы выполняете O (1) операций, и, таким образом, общая сложность составляет O (logn).