В функциональном программировании рекурсия является ядром. Однако рекурсия остается одной из наиболее сложных для понимания концепций.
Я сам программировал на Swift и Python, но до сих пор никогда по-настоящему не понимал рекурсию. Причина, по которой это трудно понять, заключается в том, что идея рекурсии не очень распространена в реальном мире. Так что начинающим программистам (или программистам 👨💻) это кажется немного запутанным.
Поэтому здесь я делаю это по-другому, начиная с чего-то гораздо более простого, чтобы каждый мог это понять.
Так что же такое рекурсия? 🤔
- Функция, которая вызывает сама себя, называется рекурсивной функцией. И этот подход известен как рекурсия (Одна вещь, которую вы должны знать о рекурсивной функции, это то, что вы должны создать условие, чтобы функция не вызывала себя бесконечно).
Почему мы его используем? 🤷♂🤷♀
- Рекурсивный код обычно короче и проще в написании, чем итеративный код. Это позволяет нам определять очень четкий и элегантный код (мой профессор однажды сказал: «Зачем повторять код, если можно повторно использовать существующий код»).
Когда использовать рекурсию 😃:
- Задачу проще решить рекурсивно (например: факториальная функция, последовательность Фибоначчи и т. д.).
Когда не использовать рекурсию 🙁:
- Рекурсивные функции обычно медленнее, чем нерекурсивные, поэтому не рекомендуется использовать их, когда у вас есть ограничение по времени.
- Для его хранения требуется много памяти, поэтому не рекомендуется использовать его, если у вас ограниченное пространство.
Пример:
Давайте напишем программу для факториала числа на Swift и Python!
Функция факториала предлагает умножить все целые числа из выбранного нами числа на 1.
Factorial Formula: n! = n×(n−1)×(n−2)…×2×1 5! = 5 x 4 x 3 x 2 x 1 (Ans: 120) 0! = 1
Свифт:
func factorial(_ n: Int) -> Int { if n >= 1 { return n * factorial(n - 1) } else { return 1 } }
Питон:
def factorial(n): if n >= 1: return n * factorial(n-1); else : return 1;