Ответ
Рекурсия в inline-функциях запрещена, потому что компилятор не может развернуть рекурсивный вызов в месте использования. inline подразумевает подстановку тела функции вместо вызова, но рекурсия требует динамического стека вызовов, что противоречит идее инлайнинга.
Пример:
inline fun recursive(n: Int) { // Ошибка компиляции: recursive call in inline function
if (n > 0) recursive(n - 1)
}
Компилятор выдаст ошибку, так как невозможно определить глубину рекурсии на этапе компиляции.