Swift函数调用自身
有人能解释为什么结果是2而不是3吗Swift函数调用自身,swift,function,func,Swift,Function,Func,有人能解释为什么结果是2而不是3吗 func fib(n: Int) -> Int { return n < 2 ? n : (fib(n: n-1) + (fib(n: n-2)) } print(fib(n: 3)) func fib(n:Int)->Int{ 返回nInt{ 如果nInt{ 如果n
func fib(n: Int) -> Int {
return n < 2 ? n : (fib(n: n-1) + (fib(n: n-2))
}
print(fib(n: 3))
func fib(n:Int)->Int{
返回n<2?n:(fib(n:n-1)+(fib(n:n-2))
}
打印(fib(n:3))
让我们浏览一下您的代码
print(fib(n: 3))
这里,您要为n
传入3
。因为3
小于2
,所以三元运算符的后半部分将被计算:
/// 1. 2.
return (fib(n: n-1) + (fib(n: n-2))
fib(n:n-1)
,您将传递2
Forn
2
再次不小于2
,因此返回(fib(n:n-1)+(fib(n:n-2))
将另一次求值。这将转换为返回(fib(n:1)+(fib(n:0))
,它将成为返回(1+0)
fib(n:n-2)
,您要传递1
,因为n
1
小于2
,所以返回值正好变成返回n
1+1=2让我们浏览一下您的代码
print(fib(n: 3))
这里,您要为n
传入3
。因为3
小于2
,所以三元运算符的后半部分将被计算:
/// 1. 2.
return (fib(n: n-1) + (fib(n: n-2))
fib(n:n-1)
,您将传递2
Forn
2
再次不小于2
,因此返回(fib(n:n-1)+(fib(n:n-2))
将另一次求值。这将转换为返回(fib(n:1)+(fib(n:0))
,它将成为返回(1+0)
fib(n:n-2)
,您要传递1
,因为n
1
小于2
,所以返回值正好变成返回n
1+1=2首先,我们可以这样编写此函数,以便于理解:
func fib(n: Int) -> Int {
if n < 2 {
return n
}
return fib(n: n-1) + fib(n: n-2)
}
func fib(n:Int)->Int{
如果n<2{
返回n
}
返回fib(n:n-1)+fib(n:n-2)
}
因此,当我们传入3
作为参数时,它将返回fib(2)+fib(1)
这里,fib(2)
将返回fib(1)+fib(0)
,即1+0=1
;而fib(1)
将返回1
因此,最终结果将是
1+1=2
首先,我们可以这样编写此函数,以便于理解:
func fib(n: Int) -> Int {
if n < 2 {
return n
}
return fib(n: n-1) + fib(n: n-2)
}
func fib(n:Int)->Int{
如果n<2{
返回n
}
返回fib(n:n-1)+fib(n:n-2)
}
因此,当我们传入3
作为参数时,它将返回fib(2)+fib(1)
这里,fib(2)
将返回fib(1)+fib(0)
,即1+0=1
;而fib(1)
将返回1
因此,最终结果将是
1+1=2
您需要调试。它与SwiftUI无关,因此不需要该标记。首先,断开三元if,生成多行,使用中间变量并添加打印?您需要调试。它与SwiftUI无关,因此不需要该标记。首先,断开三元if,生成m多行,并使用中间变量和添加打印?