循环值示例的Scala
如何在Scala中解决这个问题?按循环进行 1000以下所有3和5的倍数之和循环值示例的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构造,
示例: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)
}