Я пытаюсь реализовать простой алгоритм fast_exponentiation, основанный на повторном возведении в квадрат.Но почему-то мой цикл while не прерывается, хотя условная переменная n, кажется, достигает 0. Ниже мой код и вывод, который он генерирует:
def fast_exponentiation(a, n):
result = 1
b = a
while n > 0:
print(n)
if n%2 == 1:
result = result*b
n = n-1
b = pow(b,b)
n = int(n/2)
print("Here")
return result
print(fast_exponentiation(2,12))
Вывод:
12
6
3
1
Не могли бы вы сказать мне, что я делаю здесь не так?