1
我注意到currentTimeMillis
方法工作不正確。即使應用在30
秒內計算了階乘,其差異始終爲3
。System.currentTimeMillis在Scala中無法正常工作
object Main extends App {
def factorial(n: BigInt) = {
val start = currentTimeMillis()
@tailrec
def rec(acc: BigInt, n: BigInt): BigInt = if (n <= 1) acc else rec(n * acc, n - 1)
val fac: BigInt = rec(1, n)
val end = currentTimeMillis()
((end - start)/1000, fac)
}
val res = factorial(100000)
println(s"Get ${res._2} \n in ${res._1} seconds")
}
我的代碼有什麼問題?爲什麼它返回錯誤的結果?
您的代碼對我來說很好。你介意分享你如何執行你的代碼嗎?在任何IDE或命令行中的'scalac'或...?您計算的30秒可能包含編譯時間,運行代碼只需3秒鐘。 –
我使用IntelliJ IDEA Scala插件。 – barbara