Швидка рекурсія (з прикладами)

У цій статті ви навчитеся створювати рекурсивну функцію; функція, яка викликає себе.

Функція, яка викликає себе, відома як рекурсивна функція. І ця методика відома як рекурсія. Створюючи рекурсивну функцію, ви повинні створити умову, щоб функція не викликала себе безкінечно (нескінченно).

Як працює рекурсія в Swift?

 func repeatse () (// оператори repeatse ()) repeatse () 

На малюнку нижче показано, як працює рекурсія, викликаючи себе знову і знову.

На наведеній вище блок-схемі рекурсія виконується нескінченно. Однак майже у всіх випадках ви створюєте рекурсію, яка виконується доти, доки не буде дотримано якусь умову.

Щоб запобігти нескінченній рекурсії, використовуйте рекурсивний виклик всередині умовних операторів Swift, наприклад if … else.

Приклад 1: Вивести N додатних чисел

 func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3) 

Коли ви запускаєте таку програму, результат буде:

 Зворотний відлік: 3 2 1 0

У наведеній вище програмі оператор print("Countdown:")виводить зворотний відлік: у консолі. І оператор countDownToZero(num:3)викликає функцію, яка приймає параметр Integer.

Оператор всередині функції countDownToZero()виконується, і якщо умова num> 0виконана, функція countDownToZero()знову викликається як countDownToZero(num: num - 1).

Якщо умова не виконується, виклик функції не виконується, а рекурсія зупиняється.

Давайте подивимось це кроками

Етапи виконання
Кроки Виклик функції Друкується num> 0?
1 countDownToZero(3) 3 Так
2 countDownToZero(2) 2 Так
3 countDownToZero(1) 1 Так
4 countDownToZero(0) 0 Ні (Закінчується)

Приклад 2: Знайдіть факторіал числа

 func factorial(of num: Int) -> Int ( if num == 1 ( return 1 ) else ( return num * factorial(of:num - 1) ) ) let x = 4 let result = factorial(of: x) print("The factorial of (x) is (result)") 

Коли ви запускаєте таку програму, результат буде:

 Факториал 4 дорівнює 24

Як працює цей приклад?

Давайте подивимось це кроками

Етапи виконання
Кроки Аргумент передано Повернення заяви Значення
1 4 return 4 * factorial(of:3) 4 * факторіал (з: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * факторіал (з: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * факторіал (з: 1)
4 1 return 1 4 * 3 * 2 * 1

Зазвичай рекурсія використовується як заміна ітерації, коли рішення проблеми можна знайти приблизно за два етапи. Перший крок шукає рішення, якщо не повторити процес.

Цікаві статті...