Python - это язык объектно-ориентированного программирования, согласно этой парадигме переменные, функции, остальные компоненты воспринимаются как объект.
Объект - это условная конструкция, у которой есть какие-либо параметры и которая может служить для выполнения какой-либо функции. Можно провести параллель и представить себе, что все объекты из Python соотносятся с объектами реального мира.
Рассмотрим на примере функции def (англ. definition - определение ) Данная функция используется для того, чтобы избежать в коде повторяющихся участков и сократить их в один. Это своем роде объект или можно сказать функция содержащая в себе ссылку на другую функцию. Блок на который ссылается функция, выполняется внутри определённых рамок. Ссылаться можно неограниченное количество раз.
Функция def на которую ссылаются, может принимать значения или переменные передаваемые из другой функции, откуда производится ссылка.
Рекурсия - это описание или определение какой либо функции внутри самой этой функции, то есть ситуация, когда функция или объект является частью или ссылается на самого себя.
Увидеть рекурсию можно направив web-камеру на монитор, с которого выводится изображение самой этой web-камеры, таким образом камера будет снимать изображение которая сама-же и будет выводить.
1.При вызове функции stepen (a,n) мы напрямую передаём переменные в качестве аргументов в функцию def.
Ключевым моментом данной задачи, является условие выхода из рекурсии это случится когда n==0 при этом функция return вернёт значение 1.
2. Далее перейдя к функции def, нашей внутренней функции stepen присваиваются аргументы (2;3)
3. Каждый раз когда программа доходит оператора return, она возвращает присваивает начальному значению def stepen (a;n) новое значение =a*stepen (a;n-1).
На первой ступеньке функция функция return возвращает значение: _ def stepen (2;3)=2*stepen (2;3-1)
Значения функции в первой ступеньке замораживаются и запоминаются программой, а программа переходит к обработке второй ступеньки.
На второй ступеньке: def stepen (2;2)=2*stepen (2;2-1)
На третьей ступеньке: def stepen (2;1)=2*stepen (2;2-1)
Пройдя несколько циклов переменная n принимает значение n=1, при неизменной a=2. Пройдя условие if = = 0, далее c помощью функции return нашей переменной def stepen (a;n) присваивается значение 1
4.Возврат рекурсии
На четвертой ступеньке def stepen (2;0)=1. В этом ключевом моменте происходит обратная рекурсия, распутывание цепочки и подстановка во все функции значение.
def stepen (2;3) = 2*2*2* (четвертая ступень stepen (2;2-1))
где четвертая ступень stepen (2;2-1) =1
def stepen (2;3) = 2*2*2*1=8
Вот так будет выглядеть код нашей программы в Python
Входные данные a=2 n=3
def stepen(a,n):
____if n==0:
________return 1
____return a*stepen(a,n-1)
a = float(input())
n = int(input())
print (stepen(a,n))
Вывод:
8