Рекурсія в pascal
Почнемо з. Для початку слід розібратися з простим визначенням рекурсії: "Рекурсія - це самовідтворення". На цьому етапі слід просто змиритися з тим, що функція буде викликати саму себе. Звернення буде відбуватися безпосередньо всередині самої функції.
Прошу строго не судити даний приклад, він лише наочно показує в чому буде фішка подальшого оповідання. Як видно зі шматка коду, ми отримали нескінченний цикл, простіше кажучи функція до нескінченності буде викликати саму себе, бо ви так їй сказали. Ви напевно вже здогадалися, що слід створити умову, за якої функція не буде викликати саму себе.
приклад рекурсії: Якщо у вас жирна пляма на сукню, не переживайте. Плями від масла прибираються бензіном.Пятно від бензину розчином щёлочі.Щелочь забирається ессенціей.След від есенції потріть маслом.Hу, а як прибрати плями від масла, ви вже знаєте!
Суть алгоритму в поступовому зменшенні параметра, іншими словами ми йдемо у зворотному напрямку, вважаючи факторіал з кінця ((n-1) * (n-2) .. 3 * 2 * 1). Для кращого розуміння алгоритму я рекомендую ознайомиться з блок-схемою програми:
Примітка: червоною стрілкою позначається самовизов функції.
Слід зазначити, що функція бачить лише ті змінні, які їй передали. Тобто якщо ви створили змінну A = 5, то функція їй не побачить, якщо використовувати прямий виклик (стандартне звернення до змінної).
Ну а тепер давайте розглянемо тіло програми
А тепер давайте подивимося на всю функцію цілком:
Навіщо потрібна рекурсія? Головне завдання рекурсії в обході дерев, звернення до коріння яких можливе лише за допомогою рекурсії.