Бърза рекурсия (с примери)

В тази статия ще се научите да създавате рекурсивна функция; функция, която се извиква.

Функция, която се извиква, е известна като рекурсивна функция. И тази техника е известна като рекурсия. Докато създавате рекурсивна функция, трябва да създадете условие, така че функцията да не се извиква безкрайно (безкрайно).

Как работи рекурсията в Swift?

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

Фигурата по-долу показва как работи рекурсията, като се извиква отново и отново.

В горната диаграма на потока рекурсията се изпълнява безкрайно. Почти през всички случаи обаче създавате рекурсия, която се изпълнява, докато не бъде изпълнено някакво условие.

За да предотвратите безкрайна рекурсия, използвайте рекурсивното извикване в Swift Conditional Statements, например 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:")извежда 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

Обикновено рекурсията се използва като заместител на итерацията, когато решението на проблема може да бъде намерено в около две стъпки. Първата стъпка търси решение, ако не и повторете процеса.

Интересни статии...