【BASE】Fibonacci sequence by Swift

发布于: 2019-03-02 16:15
阅读: 30
评论: 0
喜欢: 0

问题

实现斐波那契数列。

分析过程

  • 输入:要求的斐波那契数列的序号。
  • 输出:斐波那契数列值。
  • 思路:需考虑大数以及动态规划节省时间,可以利用 Swift 的迭代器来轻松实现。

解决方法

// Iterator
struct FibIterator: IteratorProtocol {
    
    typealias Element = BigNumber
    
    var a = BigNumber.init(number: 0)
    var b = BigNumber.init(number: 1)
    
    mutating func next() -> BigNumber? {
        defer {
            (a, b) = (a + b, a)
        }
        return a
    }
}

// Sequnce
struct FibSequence: Sequence {
    
    typealias Iterator = FibIterator
    
    func makeIterator() -> Iterator {
        return FibIterator.init()
    }
}

// 输出斐波那契数列前10000个
let arr = Array.init(FibSequence.init().prefix(10000))

arr[8181].printSelf()

Thanks for reading.

All the best wishes for you! 💕