TGViewer
Senior C++ Developer Senior C++ Developer @seniorcpp · 11.6K subscribers
Post #2949 1.79K
#вопросы_с_собеседований
Может ли inline-функция быть рекурсивной в С++?

Да, inline-функция может быть рекурсивной в С++. Однако, компилятор может отказаться от встраивания рекурсивной функции, если это приведет к чрезмерному расходу памяти или времени.

Чтобы заставить компилятор встроить рекурсивную функцию, можно использовать директиву препроцессора #pragma inline_recursion(on).

На картинке выше функция вычисляет факториал числа. При компиляции этой функции с помощью компилятора GCC с опцией -O2 будет получен следующий результат:

factorial(int) at factorial.cc:5


Это означает, что функция factorial будет встроена в код.

Однако, если компилятор считает, что встраивание рекурсивной функции приведет к чрезмерному расходу памяти или времени, он может отказаться от этого. Например, если функция factorial вызывается очень часто, компилятор может решить, что встраивание функции приведет к избыточному дублированию кода. В этом случае компилятор будет использовать обычный вызов функции.
More from @seniorcpp
  1. Oct 6, 2026#вопросы_с_собеседований Что такое чисто виртуальный метод и абстрактный класс? Ответ: Чис…
  2. Oct 5, 2026#вопросы_с_собеседований В чем отличие vector от deque? Ответ: Здесь вспоминают о наличии…
  3. Oct 4, 2026Избавляемся от макросов В целом, разработчики стандарта стараются исключить препроцессор.…
  4. Oct 1, 2026malloc стал безопасен В предыдущих версиях использование низкоуровневых функций, унаследов…
  5. Sep 30, 2026Алгоритм copy_n Используется для копирования элементов из одного контейнера в другой.
  6. Sep 28, 2026Упрощаем код с помощью if constexpr и концептов C++17/C++20 Смотреть статью
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 →