В функциональном программировании рекурсия является ядром. Однако рекурсия остается одной из наиболее сложных для понимания концепций.

Я сам программировал на 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;

Если вам понравился этот пост, нажмите кнопку 👏 и поделитесь им, чтобы помочь другим найти его! Не стесняйтесь, чтобы оставить комментарий ниже.