TGViewer
PHP Backend | YeaHub PHP Backend | YeaHub @yeahub_php_backend · 376 subscribers
Post #9 65
#ЧеКак
🤔 Что такое рекурсия?

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

🚩Основные аспекты рекурсии

🟠Базовый случай (условие выхода)
Каждый рекурсивный алгоритм должен иметь базовый случай, который останавливает рекурсивные вызовы. Это условие, при котором дальнейшие рекурсивные вызовы не нужны.

🟠Рекурсивный случай
Определяет, как задача разбивается на одну или несколько подзадач меньшего размера, и как результат этих подзадач комбинируется для получения решения исходной задачи.

def factorial(n):
if n == 0:
return 1 # Базовый случай
else:
return n * factorial(n-1) # Рекурсивный случай

print(factorial(5)) # Выведет 120


🚩Плюсы

➕Простота и ясность
Рекурсивные решения могут быть проще и понятнее, чем их итеративные аналоги, особенно для задач, которые естественно определяются рекурсивно (например, обход деревьев, вычисление факториалов, задачи, связанные с последовательностями).➕Элегантность
Код может быть более элегантным и легко читаемым.

🚩Минусы

➖Производительность
Рекурсивные решения могут быть менее эффективны по сравнению с итеративными из-за накладных расходов на вызовы функций. Это может привести к большему потреблению памяти и времени выполнения.
➖Риск переполнения стека
При слишком глубокой рекурсии (например, при отсутствии базового случая или при слишком большом числе рекурсивных вызовов) может произойти переполнение стека, что приведет к сбою программы.

🚩Оптимизация рекурсии

🟠Мемоизация
Это техника оптимизации, при которой результаты дорогостоящих вызовов функций запоминаются и повторно используются при последующих вызовах с теми же аргументами. Пример:
def fibonacci(n, memo={}):
if n in memo:
return memo[n]
if n <= 1:
return n
memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo)
return memo[n]

print(fibonacci(10)) # Выведет 55


🟠Хвостовая рекурсия
Это особый вид рекурсии, при котором рекурсивный вызов является последней операцией в функции. Многие компиляторы и интерпретаторы могут оптимизировать хвостовую рекурсию, избегая увеличения стека вызовов. Пример:
def factorial_tail_recursive(n, accumulator=1):
if n == 0:
return accumulator
else:
return factorial_tail_recursive(n-1, n * accumulator)

print(factorial_tail_recursive(5)) # Выведет 120


👉Новости 👉Платформа
More from @yeahub_php_backend
  1. Oct 15, 2026#Собес #OpenShift #Kubernetes #container_platform 🤔 Что такое OpenShift и как он использу…
  2. Oct 12, 2026#Собес #storage #disk #flysystem 🤔 Было ли взаимодействие с файлами (например, через Stor…
  3. Oct 9, 2026#channel #плейлисты 📚 Просто о сложном. CutCode Этот канал — маст-хэв для любого PHP-разр…
  4. Oct 8, 2026#Собес #memory_layout #data_structures #cache_locality 🤔 Как отличие в расположении элеме…
  5. Oct 7, 2026#Собес #collector #garbage #promotion 🤔 Middle PHP Backend-разработчик в Альфа Страховани…
  6. Oct 5, 2026#Собес #profiling #performance 🤔 Если выяснили, что тормозит бэкенд — как бы вы отлаживал…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →