在Kotlin的1行中编写简单for循环

在Kotlin的1行中编写简单for循环,kotlin,Kotlin,我正在尝试将以下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; } 您可以将Java代码复制到IntelliJ IDEA中,IntelliJ IDEA可以将其转换为Kotlin代码,然

我正在尝试将以下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;
}

您可以将Java代码复制到IntelliJ IDEA中,IntelliJ IDEA可以将其转换为Kotlin代码,然后可以将0..n-1更改为0,直到n。谢谢,将for循环替换为内联结果,将if表达式替换为return,最后将其转换为表达式体:

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

请注意,此函数不符合条件,因为最后一个操作不是对函数C的调用,而是一个求和操作。

您可以将Java代码复制到IntelliJ IDEA中,IntelliJ IDEA可以将其转换为Kotlin代码,然后您可以将0..n-1更改为0,直到n谢谢,将for循环替换为内联结果,将if表达式替换为return,最后将其转换为表达式体:

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

请注意,此函数不符合条件,因为最后一个操作不是对函数C的调用,而是一个求和操作。

对于集合printitem中的项,可能是tailrec-fun-Cn:Int:Int=if n==0 1 else。对于集合printitem.com中的项,可能是tailrec-fun-Cn:Int:Int=if n==0 1 else。这正是我搜索的目的:0..n-1.sumBy{}。谢谢。0..n-1的另一个替代方案是0到n。好的观点是@fredoverflow。我已经更新了答案。谢谢,太棒了。这正是我搜索的目的:0..n-1.sumBy{}。谢谢。0..n-1的另一个替代方案是0到n。好的观点是@fredoverflow。我已经更新了答案。非常感谢。