我正在玩groovy并编写简单的一行程序:
groovy -e "(1..100_000).each{println((1..it).sum())}"
结果通过管道传输到'>'。
我遇到了两个主要问题:
我怎样才能加快执行速度,并在总和结果中留下长篇大论。
答案 0 :(得分:1)
所以,您已经回答了问题的第2部分。在使其运行更快方面,您可以递归地定义逻辑并利用memoization。
groovy -e "@groovy.transform.Memoized c(BigInteger i) { i == 1 ? 1 : c(i - 1) + i }; (1..100_000).each { println c(it) }"
答案 1 :(得分:0)
我发现如何确定范围内的数字,而不是int:
groovy -e "(1..100_000).each{println((1..(it as long)).sum())}"
或使用BigInteger:
groovy -e "(1..100_000).each{println((1..it).sum(0G))}"
仍然不了解性能问题,如果我能做些什么来加速这个脚本。