我正在学习Swift中的递归函数,并且做了以下工作:

func recursive(i: Int) -> Int {
    if i == 1 {
        return 1
    } else if i >= 2 {
        return recursive(i: i - 1) + 1
    }
    return 0
}


我不知道为什么上面的功能不起作用。我已经通过执行以下操作print(recursive(10))进行了测试,该输出为10。我希望输出为1。有人可以帮助我吗?先感谢您。

我在XCode 8.3上使用Playgrounds。

最佳答案

执行此操作时:

recursive(i: i - 1) + 1


…然后实际上是递减i,然后再次递增。这样就抵消了,您再次到达i

让我们写下对i = 3进行的计算:

(3 - 1) + 1 = ((2 - 1) + 1) + 1 = (((1) + 1) + 1) = 3

10-08 05:03