Collat​​z 序列

只要條件成立,while 迴圈就會執行它的身體。例如,以下程式碼計算並列印給定數字的 Collat​​z 序列

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 不保證尾部呼叫消除,因此遞迴使用額外的記憶體並可能導致堆疊溢位錯誤。
  • 而且,出於同樣的原因,迴圈可以減少開銷並且執行得更快。