爲什麼斯卡拉理解性能
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