Вот мы и подошли к теме, где многие ученики испытывают проблемы, но я постараюсь насколько возможно просто объяснить, что такое рекурсия.
Рекурсия – это когда процедура или функция вызывает саму себя. Давайте сейчас напишем процедуру, и дальше я объясню как она работает поэтампно.
Создаем программу с именем recursion и во втором разделе создаем процедуру с именем podProgramma, у которой будет один параметр.
Далее набираем раздел begin end; для процедуры, где если i будет больше или равна 1, то выводим ее на экран.
А вот дальше вызываем снова процедуру podProgramma, только уже с i меньше на 1.
Далее выводим такое сообщение на экран, дальше я объясню зачем.
А в else выводим такое сообщение.
набираем третий раздел нашей программы где процедуре передаем значение 4.
А теперь я расскажу как поэтапно будет работать программа. Так как процедура будет вызываться несколько раз, я буду их называть 1-ая процедура, 2-ая и т.д. Итак, когда мы запустим программу, то вызовется 1-ая процедура, которая схематически выглядит так:
Сперва отрабатывает условие, если i больше или равно 1, у нас оно равно 4.
Далее мы перемещаемся в раздел then где выводим на экран значение i.
Далее выполняется следующее действие, где процедура вызывает саму себя только в параметр мы теперь передаем значение 3.
Получается у нас запускается вторая процедура, которая работает точно также, но выводит значение 3.
И далее также по цепочке пока i не станет меньше 1.
Т.е. когда у нас i будет равен 0, то в 5-ой процедуре сработает блок else, и процедура завершится.
Вывод на данный момент будет таким:
Т.е. 5-ая процедура завершилась, теперь 4-ая может идти дальше и выполнить следующее действие и тоже завершиться.
И так далее, каждая предшествующая процедура будет выполнять свое следующее действие и завершаться. Давайте запустим программу и посмотрим что получилось в выводе.
А получилось то, что мы и ожидали увидеть.
Теперь давайте разберем пример рекурсии для получения факториала числа. Его обычно и разбирают для объяснения, что такое рекурсия, но у студентов часто возникают трудности с его пониманием. А так как вы уже понимаете, что такое рекурсия, думаю, для вас уже не составит труда разобраться со следующим примером.
Как в математике найти факториал, например, числа 4. Все очень просто, надо просто умножить числа от 1 до 4 между собой:
4! = 1*2*3*4 = 24
Давайте теперь напишем функцию, которая буде определять факториал любого числа. Назовем функцию factorial, параметру также дадим имя i, функция будет возвращать число.
Далее укажем, что если параметр будет равен 1, то функция вернет факториал равный 1.
А если в параметре мы укажем например цифру 4 ты факториал будет равен такому произведению:
Скоро мы поэтапно рассмотрим, как данная функция будет работать. В третьем разделе программы давайте выведем факториал числа 4.
Теперь схематически рассмотрим как поэтапно работает функция.
Сперва определяется равно ли значение переменной 4. В нашем случае нет, значит факториал будет равен 4 * на факториал числа 3. Но мы не знаем пока чему он равен, пошли вычислять чему равен факториал числа 3.
Здесь все тоже самое, чтобы вычислить чему будет равен факториал числа три, нам надо знать чему равен факториал двух.
И когда мы дойдем до 4 функции, которая вернет значение 1, то она закроется и мы снова вернемся к 3 функции.
Теперь мы можем определить чему равен факториал от 2, так как мы знаем чему равен факториал от 1. Значит факториал от двух равен двум, на этом данная функция закрывается, и мы переходим к следующей.
Здесь мы уже можем определить, чему равен факториал числа три. А он равен 6. На этом данная фуекция закрывается и мы переходим к последней.
И здесь мы уже можем определить, чему равен факториал от 4. А он равен 24. Проверим, запустим нашу программу.
И мы оказались правы:) Надеюсь было все понятно. До встречи на следующем уроке!