Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环值示例的Scala_Scala_For Loop - Fatal编程技术网

循环值示例的Scala

循环值示例的Scala,scala,for-loop,Scala,For Loop,如何在Scala中解决这个问题?按循环进行 1000以下所有3和5的倍数之和 示例:1*3+2*5+3*3+4*5+5*3+6*5。。。那么999*3+1000*5=多少?我不认为1000*5是1000以下5的倍数。1000*5为5000,不低于1000 看起来你想要的是: (1 to 1000).filter(x => x % 3 = 0 || x % 5 == 0).sum 它不使用“for循环”。很多人会对这样的术语感到畏缩,scala实际上没有for循环。如果必须使用for构造,

如何在Scala中解决这个问题?按循环进行

1000以下所有3和5的倍数之和


示例:1*3+2*5+3*3+4*5+5*3+6*5。。。那么999*3+1000*5=多少?

我不认为1000*5是1000以下5的倍数。1000*5为5000,不低于1000

看起来你想要的是:

(1 to 1000).filter(x => x % 3 = 0 || x % 5 == 0).sum
它不使用“for循环”。很多人会对这样的术语感到畏缩,scala实际上没有for循环。如果必须使用for构造,也许您可以编写

 (for (x <- 1 to 1000 if x % 3 == 0 || x % 5 == 0) yield x).sum

(对于(x如果你想使用函数式编程的原理,你可以使用递归-最好使用尾部递归(很抱歉,这个例子不是很好,但是已经很晚了)

在for循环中,您可以像

var result = 0
for(i <- 1 to 1000){
    result += i*(i%2==0?5:3)
}
var结果=0
对于(我)来说,以前有人问过这个问题:这是ProjectEuler的问题#1,如果您希望有人为您解答这个问题,有一个带有scala解决方案的网站。
var s = 0
for { x <- 1 to 1000 if (x % 3 == 0 || x % 5 == 0) } { s += x }
s
def calc(factorB:Int):Int = {
    if(factorB+1 >= 1000)
        3*factorB+5*(factorB+1)
    else
        3*factorB+5*(factorB+1)+calc(factorB+2)
}
var result = 0
for(i <- 1 to 1000){
    result += i*(i%2==0?5:3)
}