Вот мы и подошли к теме, где многие ученики испытывают проблемы, но я постараюсь насколько возможно просто объяснить, что такое рекурсия.
Рекурсия – это когда процедура или функция вызывает саму себя. Давайте сейчас напишем процедуру, и дальше я объясню как она работает поэтампно.
Создаем программу с именем recursion и во втором разделе создаем процедуру с именем podProgramma, у которой будет один параметр.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-547.png)
Далее набираем раздел begin end; для процедуры, где если i будет больше или равна 1, то выводим ее на экран.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-548.png)
А вот дальше вызываем снова процедуру podProgramma, только уже с i меньше на 1.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-549.png)
Далее выводим такое сообщение на экран, дальше я объясню зачем.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-550.png)
А в else выводим такое сообщение.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-551.png)
набираем третий раздел нашей программы где процедуре передаем значение 4.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-552.png)
А теперь я расскажу как поэтапно будет работать программа. Так как процедура будет вызываться несколько раз, я буду их называть 1-ая процедура, 2-ая и т.д. Итак, когда мы запустим программу, то вызовется 1-ая процедура, которая схематически выглядит так:
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-553-1024x595.png)
Сперва отрабатывает условие, если i больше или равно 1, у нас оно равно 4.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-554-1024x601.png)
Далее мы перемещаемся в раздел then где выводим на экран значение i.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-555-1024x621.png)
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-556.png)
Далее выполняется следующее действие, где процедура вызывает саму себя только в параметр мы теперь передаем значение 3.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-557-1024x594.png)
Получается у нас запускается вторая процедура, которая работает точно также, но выводит значение 3.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-559-1024x324.png)
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-560.png)
И далее также по цепочке пока i не станет меньше 1.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-562-1024x134.png)
Т.е. когда у нас i будет равен 0, то в 5-ой процедуре сработает блок else, и процедура завершится.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-563-1024x463.png)
Вывод на данный момент будет таким:
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-564-1024x467.png)
Т.е. 5-ая процедура завершилась, теперь 4-ая может идти дальше и выполнить следующее действие и тоже завершиться.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-565-1024x448.png)
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-566-1024x529.png)
И так далее, каждая предшествующая процедура будет выполнять свое следующее действие и завершаться. Давайте запустим программу и посмотрим что получилось в выводе.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-567.png)
А получилось то, что мы и ожидали увидеть.
Теперь давайте разберем пример рекурсии для получения факториала числа. Его обычно и разбирают для объяснения, что такое рекурсия, но у студентов часто возникают трудности с его пониманием. А так как вы уже понимаете, что такое рекурсия, думаю, для вас уже не составит труда разобраться со следующим примером.
Как в математике найти факториал, например, числа 4. Все очень просто, надо просто умножить числа от 1 до 4 между собой:
4! = 1*2*3*4 = 24
Давайте теперь напишем функцию, которая буде определять факториал любого числа. Назовем функцию factorial, параметру также дадим имя i, функция будет возвращать число.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-608.png)
Далее укажем, что если параметр будет равен 1, то функция вернет факториал равный 1.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-609.png)
А если в параметре мы укажем например цифру 4 ты факториал будет равен такому произведению:
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-610.png)
Скоро мы поэтапно рассмотрим, как данная функция будет работать. В третьем разделе программы давайте выведем факториал числа 4.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-612.png)
Теперь схематически рассмотрим как поэтапно работает функция.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-613-1024x509.png)
Сперва определяется равно ли значение переменной 4. В нашем случае нет, значит факториал будет равен 4 * на факториал числа 3. Но мы не знаем пока чему он равен, пошли вычислять чему равен факториал числа 3.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-614.png)
Здесь все тоже самое, чтобы вычислить чему будет равен факториал числа три, нам надо знать чему равен факториал двух.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-616-1024x255.png)
И когда мы дойдем до 4 функции, которая вернет значение 1, то она закроется и мы снова вернемся к 3 функции.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-617-1024x517.png)
Теперь мы можем определить чему равен факториал от 2, так как мы знаем чему равен факториал от 1. Значит факториал от двух равен двум, на этом данная функция закрывается, и мы переходим к следующей.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-618-1024x521.png)
Здесь мы уже можем определить, чему равен факториал числа три. А он равен 6. На этом данная фуекция закрывается и мы переходим к последней.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-619-1024x539.png)
И здесь мы уже можем определить, чему равен факториал от 4. А он равен 24. Проверим, запустим нашу программу.
![](https://xn----ftbowege2g.xn--p1ai/wp-content/uploads/2023/03/image-620.png)
И мы оказались правы:) Надеюсь было все понятно. До встречи на следующем уроке!