函数可以调用自身,这叫作递归。递归似乎有些可怕,就像从悬崖上跳下来一样,因为要冒着创建一个无限循环的风险;不过,如果函数编写正确,那么总是会有一个“停止”条件,它会处理降级情况,并防止无限循环的发生:
func countDownFrom(ix:Int) { print(ix) if ix > 0 { // stopper countDownFrom(ix-1) // recurse! }}
在Swift 2.0之前,Swift对递归施加了一个限制:函数中的函数(局部函数)不可以调用自身。在Swift 2.0中,这个限制已经解除了。