Fibonacci数列是一个从0和1开始的数列,后续的每个数都是前两个数的和。数列的前几个数是:0, 1, 1, 2, 3, 5, 8, 13, 21, ...
以下是使用迭代法生成Fibonacci数列的Swift 3代码示例:
func fibonacci(n: Int) -> [Int] {
if n <= 0 {
return []
}
var fibs = [0, 1]
for i in 2..<n {
fibs.append(fibs[i - 1] + fibs[i - 2])
}
return fibs
}
// 示例调用
let fibSequence = fibonacci(n: 10)
print(fibSequence) // 输出: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
原因:递归法会重复计算许多子问题,导致时间复杂度为O(2^n)。
解决方法:使用动态规划或迭代法来优化算法,避免重复计算。
func fibonacciRecursive(n: Int) -> Int {
if n <= 1 {
return n
}
return fibonacciRecursive(n: n - 1) + fibonacciRecursive(n: n - 2)
}
// 示例调用
let fibNumber = fibonacciRecursive(n: 10)
print(fibNumber) // 输出: 55
优化后的代码:
func fibonacciDP(n: Int) -> Int {
if n <= 1 {
return n
}
var fib = [0, 1]
for i in 2...n {
fib.append(fib[i - 1] + fib[i - 2])
}
return fib[n]
}
// 示例调用
let fibNumberOptimized = fibonacciDP(n: 10)
print(fibNumberOptimized) // 输出: 55
通过以上内容,你应该对Swift 3中的Fibonacci数生成器有了全面的了解,包括基础概念、优势、类型、应用场景以及常见问题的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云