跑步时
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 次 |
最近记录: |