// 通过递归的方式计算 - 有性能问题 // 时间复杂度: O(2^n) funcfib(_n: Int) -> Int { if n <=1 { return n } return fib1(n -1) + fib1(n -2) }
方法二
1 2 3 4 5 6 7 8 9 10 11 12
// 时间复杂度: O(n) funcfib(_n: Int) -> Int { if n <1 { return0 } var left =1 var right =0 for_in1..<n { let sum = (left + right) %Int(1e9+7) right = left left = sum } return left }
1 2 3 4 5 6 7 8 9 10 11
// 时间复杂度: O(n) funcfib(_n: Int) -> Int { if n <1 { return0 } if n <=2 { return1 } var array: [Int] =Array(repeating: 0, count: n+1) array[1] =1 for i in2...n { array[i] = (array[i-1] + array[i-2]) %Int(1e9+7) } return array[n] }