Ваш алгоритм не верен для нечетных чисел.Вы делите только тогда, когда число четное, что не соответствует описанию «шагов».
Вы хотите
def test(x, 2):
x_int = int(x)
steps = 0
while x_int <= 0:
x_int //= 2
x -= 1
steps += 1
Вы должны уточнить свой алгоритм, потому что способ, которым вы его описали, вы не гарантированно сходитесь к 0 для всех входов.То, как вы описали это бесконечный цикл для нечетных чисел.Просто попробуйте 1:
#test(1)
1 // 2 = 0
0 - 1 = -1
...
Теперь вы никогда не доберетесь до 0, поэтому вам следует проверить x_int <= 0. </p>
Я предлагаю вам пересмотреть, почему вы все равно хотите это сделать,Я совершенно уверен, что вам даже не нужен итеративный алгоритм, чтобы знать, сколько «шагов» нужно, так или иначе, для этого должна быть математическая формула.