老说递归,感觉很难的样子,其实就是一道数学题,看代码:
func getNumber(n:Int)->Int{
if 0 > n{
return 0
}
if n == 1{
return 1
}
if n == 2{
return 2
}
if n > 2{
return getNumber(n: n-1) + getNumber(n: n - 2)
}
return 0
}
let number = getNumber(n: 9)
print(number)
//其实分解出来就是这么个公式()
f9 = f8 + f7
f8 = f7 + f6
f7 = f6 + f5
f6 = f5 + f4
f5 = f4 + f3
f4 = f3 + 2 //f2 == 2 因为 n = 2, return 2
f3 = f2 + f1 = 2+1 = 3
f3 = 3
f4 = 5
f5 = 8
f6 = 13
f7 = 21
f8 = 34
f9 = 55 //number = 55 正解