Ключова відмінність: При програмуванні рекурсія може бути пояснена шляхом розгляду рекурсивної функції. Рекурсивна функція є такою, яка знову закликає повторювати код. З іншого боку, ітерація досягається ітераційною функцією, яка повторює певний розділ коду.
При програмуванні рекурсія і ітерація використовуються для досягнення повторів. Вони стосуються процесу, який повторюється багато разів. Рекурсія ґрунтується на підході, в якому щось називає себе, поки не буде виконано умову. Метод називається рекурсивним, якщо він може викликати себе безпосередньо або опосередковано, як -
{
... назва () ...
}
або
недійсне ім'я ()
{
... гра () ...
}
void game () {
... назва () ...
}
Для успішної рекурсії необхідно мати на увазі, що кожен виклик, здійснений у процесі рекурсії, повинен спростити обчислення. Рекурсія досягається шляхом визначення базового випадку.
int factorial (int N)
{
if (N == 0) повернення 1;
інакше повернемо (N * факториал (N-1));
}
У цьому прикладі рекурсія легко видно в операторі (N * factorial (N-1)), де вона знову викликає факторну функцію. Рекурсія дуже корисна, оскільки вона допомагає скоротити код. Проте рекурсія трохи повільна.
функціональна функція (n)
{
var loop, результат;
результат = 1;
for (loop = 1; loop <= n; loop ++)
{
результат = цикл * результат;
}
результат повернення;
}
У цьому прикладі цикл досягається використанням цілих чисел від 1 до n, а оператор loop <= n використовується як критерій для припинення подальшого циклування. Таким чином, можна зробити висновок, що ті ж результати можна досягти за допомогою рекурсії і ітерації. Проте, обидва вони базуються на підходах, які трохи відрізняються. Будь-який рекурсивний алгоритм також може бути записаний з використанням ітерацій (циклів).
Порівняння між рекурсією та ітерацією:
Рекурсія | Ітерація | |
Визначення | Рекурсія відноситься до рекурсивної функції, в якій він знову викликає себе, щоб повторити код. | Ітерація досягається ітераційною функцією, яка повторює певний розділ коду. |
Важливий момент | Необхідно визначити базовий випадок | Необхідно визначити умову завершення |
Продуктивність | Порівняно повільно | Порівняно швидко |
Використання пам'яті | Порівняно більше | Порівняно менше |
Код | Менше | Більше |
Нескінченне повторення | Нескінченна рекурсія здатна зірвати систему | Нескінченний цикл повторно споживає цикли процесора |
Структура | Вибір | Повторення |
Локальні змінні | Не вимагається | вимагається |