Swift--递归是什么

老说递归,感觉很难的样子,其实就是一道数学题,看代码:

                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 正解

猜你喜欢

转载自blog.csdn.net/SoftwareDoger/article/details/100053325