Быстрая рекурсия (с примерами)

В этой статье вы научитесь создавать рекурсивную функцию; функция, которая вызывает сама себя.

Функция, которая вызывает сама себя, называется рекурсивной функцией. И этот метод известен как рекурсия. При создании рекурсивной функции вы должны создать условие, чтобы функция не вызывала себя бесконечно (бесконечно).

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

 func recurse () (// операторы recurse ()) recurse () 

На рисунке ниже показано, как работает рекурсия, вызывая себя снова и снова.

На приведенной выше блок-схеме рекурсия выполняется бесконечно. Однако почти всегда вы создаете рекурсию, которая выполняется до тех пор, пока не будет выполнено какое-либо условие.

Чтобы предотвратить бесконечную рекурсию, используйте рекурсивный вызов внутри условных операторов 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).

Если условие не выполняется, вызов функции не выполняется и рекурсия останавливается.

Посмотрим на это пошагово

Шаги выполнения
Шаги Вызов функции Печатный число> 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

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

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