函數可以調用自身,這叫作遞歸。遞歸似乎有些可怕,就像從懸崖上跳下來一樣,因為要冒著創建一個無限循環的風險;不過,如果函數編寫正確,那麼總是會有一個「停止」條件,它會處理降級情況,並防止無限循環的發生:
func countDownFrom(ix:Int) { print(ix) if ix > 0 { // stopper countDownFrom(ix-1) // recurse! } }
在Swift 2.0之前,Swift對遞歸施加了一個限制:函數中的函數(局部函數)不可以調用自身。在Swift 2.0中,這個限制已經解除了。