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

标签 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;
}

如何将其写成一行?就像是:
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,用return替换if表达式,最后将其转换到表达主体:

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

请注意,此函数不适合 tailrec 使用,因为最后一个操作不是对该函数的调用(C),而是一个求和操作。

关于kotlin - 用Kotlin在1行中编写简单的for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43048846/

相关文章:

kotlin - 这个扩展功能为什么/如何工作?如何在没有 `with` 的情况下调用它?

kotlin - 如何强制调用某些构造函数/函数以使用命名参数?

android - 有没有办法实时知道应用程序何时使用权限?

android - 房间 : Crash on emulator

generics - 处理Array <T>或IntArray的函数

Kotlin 将函数列表发送到

node.js - 如何在 KotlinJS 中使用 socket.io-client

spring-boot - 如何调试,为什么Spring Boot集成测试上下文不会在测试之间重用?

kotlin - 如何在 Kotlin 中为内部阻塞线程进行挂起调用 "wait"?

java - 如何在 Spring 中获取 Cognito 用户的组?