Задать вопрос

Как понять рекурсию в Python?

Приветствую

Наткнулся на задачу возведения в степень числа через рекурсию функции, но не могу понять алгоритм рекурсии.

Решение задачи:
def rec(a,b):
    if b == 0:
        return 1
    else:
        return a * rec(a, b-1)

a, b = 2, 3
print(rec(a,b))

В функции в условии else а вычисляется до нужной степени, с каждой рекурсией b уменьшается на единицу и в итоге приравнивается к нулю. Когда b равно нулю выполняется первое условие (return 1), но это условие возвращает единицу, а не число, возведенное в степень. Так каким же тогда образом выводится степень, а не единица?
  • Вопрос задан
  • 27359 просмотров
Подписаться 3 Оценить 1 комментарий
Решение пользователя abcd0x00 К ответам на вопрос (7)
@abcd0x00
Как понять рекурсию в Python?

Нужно смотреть на функцию как на множество разных функций, похожих друг на друга. Поэтому когда функция вызывает саму себя, надо на это смотреть как на функцию, вызывающую очень похожую, но другую функцию. А когда функция вызывает другую функцию, они передают друг другу значения: вызывающая вызываемой подаёт параметры, а вызываемая вызывающей подаёт возвращаемое значение.
Ответ написан