跑步时
1..10000000000000000000 |> Enum.sum
Run Code Online (Sandbox Code Playgroud)
结果是在似乎恒定的时间内计算的 - 我假设它使用公式 1+ 2+ ... + n = n(n+1) / 2
什么允许elixir进行这种优化?是1..n表示法与声明正常列表不同[1,2,3].当我检查1..100000它似乎返回一个字符串.这里发生了什么?
Dog*_*ert 14
1..10000000000000000000是一个Range和Elixir有一个特殊情况Enum.sum的范围使用整数求和公式:
def sum(first..last) when last > first do
div((last + first) * (last - first + 1), 2)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |