Написание простых для цикла в 1 строке в Котлине

Я пытаюсь переписать следующий java-метод в функцию Kotlin:

int C(int n) { if (n == 0) return 1; int result = 0; for (int i = 0; i < n; i++) result += C(i) * C(n - i - 1); return result; } 

Как я могу написать его в одной строке? Что-то вроде:

 tailrec fun C(n: Int): Int = if (n == 0) 1 else { /* for loop? */} 

Вы можете скопировать Java-код в IntelliJ IDEA, который может преобразовать его в код Kotlin, затем вы можете изменить 0..n - 1 на 0 until n (спасибо fredoverflow ), заменить цикл for на sumBy{} , встроенный result , заменить if выражение с возвратом и, наконец, преобразует его в тело выражения:

 fun C(n: Int): Int = if (n == 0) 1 else (0 until n).sumBy { C(it) * C(n - it - 1) } 

Обратите внимание, что эта функция не подходит для tailrec поскольку последняя операция не является вызовом функции ( C ), а является суммирующей операцией.