В Python степень вычисляется оператором **: например, 2 ** 10 равно 1024. Если запрещён и оператор степени, можно реализовать быстрое возведение в целую неотрицательную степень.
Как возвести число в степень без использования pow()?
В 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.