【发布时间】:2020-12-31 03:32:12
【问题描述】:
def f(x: Int): Int = x + 1
def sum1(n: Int): Int = {
var sum: Int = 0
for (i <- 1 to n) {
sum += i * f(i)
}
sum
}
val sum2: Int => Int = (n: Int) => (1 to n).reduce((x, y) => x * f(x) + y * f(y))
sum2 函数是错误的,但我想知道如何使用 reduce 或 fold 来编写 sum1
【问题讨论】:
-
(1 to n).fold(0)((s,x) => s + x * f(x)) -
(0 to n).reduce((s,x) => s + x * f(x)) -
我刚刚想通了,如果我想用范围(1 到 n)来做,实际上我需要(0 到 n)。这将是 (0 to n).reduce((x, y) => x + y * f(y))
-
是的,那是真的,谢谢
标签: scala functional-programming reduce fold