Ответ:
Чтобы получить сложность O(log n), используем деление показателя пополам. Предполагается, что n — целое неотрицательное число.
- База: если n = 0, возвращаем 1.
- Рекурсивно вычисляем t = pow(a, ⌊n/2⌋).
- Если n чётное, возвращаем t · t; если нечётное — a · t · t.
За один вызов показатель уменьшается примерно вдвое, поэтому число вызовов пропорционально log n.
Ответ: pow(a,n) = 1 при n = 0; иначе t = pow(a, ⌊n/2⌋), результат — t² при чётном n и a·t² при нечётном n.
