Collatz 序列
只要條件成立,while
迴圈就會執行它的身體。例如,以下程式碼計算並列印給定數字的 Collatz 序列 :
function collatz(n)
while n ≠ 1
println(n)
n = iseven(n) ? n ÷ 2 : 3n + 1
end
println("1... and 4, 2, 1, 4, 2, 1 and so on")
end
用法:
julia> collatz(10)
10
5
16
8
4
2
1... and 4, 2, 1, 4, 2, 1 and so on
可以遞迴地編寫任何迴圈,對於複雜的 while
迴圈,有時遞迴變數更清晰。但是,在 Julia 中,迴圈比遞迴具有一些明顯的優勢:
- Julia 不保證尾部呼叫消除,因此遞迴使用額外的記憶體並可能導致堆疊溢位錯誤。
- 而且,出於同樣的原因,迴圈可以減少開銷並且執行得更快。