为什么斯卡拉理解性能
for (
a <- 1 to 1000;
b <- 1 to 1000 - a;
c <- 1 to 1000 - a - b;
if (a * a + b * b == c * c && a + b + c == 1000)
) println((a, b, c, a * b * c))
266毫秒
慢则:
for (a <- 1 to 1000)
for (b <- 1 to 1000 - a)
for (c <- 1 to 1000 - a - b)
if (a * a + b * b == c * c)
if (a + b + c == 1000)
println((a, b, c, a * b * c))
62毫秒
如果我理解正确的,这应该是一样的吗?加工后的答案
解决方案:
for (
a <- 1 to 1000;
b <- 1 to (1000 - a)
) {
val c = (1000 - a - b)
if (a * a + b * b == c * c)
println((a, b, c, a * b * c))
}
9毫秒
至少编写你使用的Scala版本真的很有用。至多你的操作系统和其他相关信息。 – 2013-02-28 14:00:57
我使用的是Windows 7和版本2.9.2,使用eclipse和jre7。 – Jeff 2013-02-28 14:12:57
奇怪的方式寻找解决方案 - 你需要'a + b + c == 1000'为什么不只是设置'c = 1000 - a - b'? (显然这不是问题的答案....) – 2013-02-28 14:35:56