Рекурсія — це коли функція викликає саму себе. В Elixir, де немає циклів, рекурсія є основним способом обробки колекцій та повторюваних операцій. Проста рекурсія Базова рекурсивна функція складається з двох частин: базового випадку та рекурсивного виклику: # Факторіал defmodule Math do def factorial(0), do: 1 def factorial(n) when n > 0 do n * factorial(n - 1) end end Math.factorial(5) # 120 (5 * 4 * 3 * 2 * 1) # Сума списку defmodule ListHelper do def sum([]), do: 0 def sum([head | tail]) do head + sum(tail) end end ListHelper.sum([1, 2, 3, 4, 5]) # 15 Примітка: Базовий випадок (наприклад, порожній список або 0) запобігає нескінченній рекурсії. Проблема простої рекурсії Проста рекурсія створює стек викликів, що може призвести до переповнення пам'яті: # Неефективна рекурсія def factorial(5) 5 * factorial(4) 4 * factorial(3) 3 * factorial(2) 2 * facto...
Блог про програмування