首页 > 解决方案 > Kotlin - 使用 Lambda 函数 range、map、filter、reduce/fold 来查找 1-1000 之间可被 3 或 5 整除的所有数字的总和

问题描述

我正在尝试使用 Lambda 函数来查找 1-1000 之间可被 3 或 5 整除的数字的总和。我必须在 Kotlin 中完成任务。

到目前为止,我所拥有的是:

fun divisibleByThreeOrFive () { 
}

因此,任何帮助将不胜感激。

标签: functionlambdakotlin

解决方案


谈论“从xy的数字”让我想起了这IntRange门课。您可以使用该rangeTo()函数以易于阅读的方式生成您的内容,或者如果您愿意IntRange,也可以使用语法来执行此操作。(x..y)

只谈论那些“能被 3 或 5 整除”的东西让我想到了filter()接受谓词的函数。

谈论这些数字的总和让我想到了sum()函数。

把它们放在一起,你会得到:

val sum = 1.rangeTo(1000)
    .filter { it % 3 == 0 || it % 5 == 0 }
    .sum()

推荐阅读