Как возвести число в степень без использования pow()?

В Python степень вычисляется оператором **: например, 2 ** 10 равно 1024. Если запрещён и оператор степени, можно реализовать быстрое возведение в целую неотрицательную степень.

Короткий ответ

Что ответить на собеседовании

В Python степень вычисляется оператором **: например, 2 ** 10 равно 1024. Если запрещён и оператор степени, можно реализовать быстрое возведение в целую неотрицательную степень.

Подробный разбор

Ответ с пояснениями

В Python степень вычисляется оператором **: например, 2 ** 10 равно 1024. Если запрещён и оператор степени, можно реализовать быстрое возведение в целую неотрицательную степень.

Алгоритм последовательно возводит основание в квадрат и использует биты показателя:

def power(base, exponent):
    if type(exponent) is not int or exponent < 0:
        raise ValueError('Expected a nonnegative integer')
    result = 1
    while exponent:
        if exponent % 2:
            result *= base
        base *= base
        exponent //= 2
    return result

Число умножений — O(log exponent) для положительного показателя. Стоимость умножения больших чисел отдельно зависит от их размера. Нулевой показатель даёт 1.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее