我试图将以下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? */}
答案 0 :(得分:4)
您可以将Java代码复制到IntelliJ IDEA中,然后将其转换为Kotlin代码,然后您可以将0..n - 1
更改为0 until n
(感谢fredoverflow),将for循环替换为{ {3}},内联result
,将if
表达式替换为return,最后将其转换为表达式主体:
fun C(n: Int): Int = if (n == 0) 1 else (0 until n).sumBy { C(it) * C(n - it - 1) }
请注意,此函数不符合sumBy{}
的条件,因为最后一个操作不是对函数的调用(C
),而是一个求和操作。