Не понимаю, почему этот цикл while не заканчивается - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь реализовать простой алгоритм 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

Не могли бы вы сказать мне, что я делаю здесь не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...