美文网首页
斐波那契数列-Swift

斐波那契数列-Swift

作者: 等消息的人 | 来源:发表于2020-05-23 08:11 被阅读0次

    写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:

    F(0) = 0, F(1) = 1
    F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
    斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

    答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

    示例 1

    输入:n = 2
    输出:1
    

    示例 2:

    输入:n = 5
    输出:5
    

    代码

    /**
         斐波那契数列:1,1,2,3,5,8,13,21,34.....时间复杂度O(n)
         */
        public func fib(_ N: Int) -> Int {
            var fibs: [Int : Int] = [0: 0, 1: 1, 2: 1]
            return fib(N, fibs: &fibs)
        }
        
        func fib(_ N: Int, fibs: inout [Int: Int]) -> Int {
            var result = 0
            if let fib = fibs[N] {
                return fib
            }
            
            result = fib(N - 1, fibs: &fibs) + fib(N - 2, fibs: &fibs)
            if result >= 1000000007 {
                result = result % 1000000007
            }
            fibs[N] = result
            
            return result
        }
    

    相关文章

      网友评论

          本文标题:斐波那契数列-Swift

          本文链接:https://www.haomeiwen.com/subject/lvtkahtx.html