XCode游乐场中的递归函数(Swift)
我正在学习Swift中的递归函数,我做了以下工作:XCode游乐场中的递归函数(Swift),swift,recursion,Swift,Recursion,我正在学习Swift中的递归函数,我做了以下工作: func recursive(i: Int) -> Int { if i == 1 { return 1 } else if i >= 2 { return recursive(i: i - 1) + 1 } return 0 } 我不明白为什么上面的函数不起作用。我已经通过执行下面的doingprint(recursive(10))对其进行了测试,这给了我10的输出
func recursive(i: Int) -> Int {
if i == 1 {
return 1
} else if i >= 2 {
return recursive(i: i - 1) + 1
}
return 0
}
我不明白为什么上面的函数不起作用。我已经通过执行下面的doingprint(recursive(10))
对其进行了测试,这给了我10的输出。我期望输出为1。有人能帮我吗?先谢谢你
我正在使用XCode 8.3上的操场。当您这样做时:
recursive(i: i - 1) + 1
…然后实际上是递减i
,然后再递增。这就取消了,您再次到达i
让我们写下将对i=3进行的计算:
(3 - 1) + 1 = ((2 - 1) + 1) + 1 = (((1) + 1) + 1) = 3
这是一个不使用任何循环打印数字的完美示例
递归函数对于处理此类情况非常有用
func printCount( count : inout Int , limit : Int) {
print(count, terminator: " ")
count += 1
if count > limit {
return
}
printCount(count: &count , limit: limit)
}
var count = 11
let limit = 20
printCount(count: &count , limit: limit)
输出:1113141517181920递归(10)==10
正确。为什么还需要其他东西?是的,它应该是1,但输出显示为10。是的,因为您在每个递归调用中添加1,并执行9个递归调用–因此1+9=10我的第一条注释中有一个拼写错误(现已修复)<代码>10是正确的输出。实际上,对于所有正整数,递归(n)==n
。。。。证明人:)谢谢你的解释!在我看来,+1
只发生过一次,(i-1)
会一直持续到它达到1为止。我真的把自己弄糊涂了。