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 不保证尾部调用消除,因此递归使用额外的内存并可能导致堆栈溢出错误。
- 而且,出于同样的原因,循环可以减少开销并且运行得更快。