Почему нельзя использовать рекурсию в inline-функции

«Почему нельзя использовать рекурсию в inline-функции» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

inline fun recursive(n: Int) { // Ошибка компиляции: recursive call in inline function
    if (n > 0) recursive(n - 1)
}

Компилятор выдаст ошибку, так как невозможно определить глубину рекурсии на этапе компиляции.