缓存方式
var fibMemo: [UInt: UInt] = [0: 0, 1: 1]
func fibCache(n: UInt) -> UInt {
if fibMemo[n] != nil {
return n
} else {
fibMemo[n] = fibCache(n: n - 1) + fibCache(n: n - 2)
return fibMemo[n]!
}
}
迭代方式
func fibIteration(n: UInt) -> UInt {
if (n == 0) {
return n
}
var last: UInt = 0, next: UInt = 1
for _ in 1..<n {
(last, next) = (next, last + next)
}
return next
}
网友评论