Загрузка данных


Код:

#include <iostream>
using namespace std;

double power(double a, int n) {
    if (n == 0) {
        return 1;
    }

    if (n % 2 == 0) {
        return power(a * a, n / 2);
    }
    else {
        return a * power(a, n - 1);
    }
}

int main() {
    double a;
    int n;

    cin >> a >> n;

    cout << power(a, n);

    return 0;
}

Что происходит текстом

Начало работы программы.
Вводится действительное число a и целое неотрицательное число n.

Далее вызывается рекурсивная функция возведения в степень.

Если степень n равна 0, функция возвращает 1, потому что любое число в нулевой степени равно 1.

Если степень n чётная, число a умножается само на себя, а степень уменьшается в 2 раза.
То есть вместо долгого умножения используется выражение:

a^n = (a * a)^(n / 2)

Если степень n нечётная, число a умножается на результат возведения в степень n - 1:

a^n = a * a^(n - 1)

Функция вызывает сама себя до тех пор, пока степень не станет равна 0.

После завершения всех рекурсивных вызовов программа получает ответ и выводит его на экран.
Конец работы программы.