【发布时间】:2015-12-05 12:57:58
【问题描述】:
我在玩 IBM Swift Sandbox 的 beta 版;有谁知道为什么我在下面的代码中收到以下错误?:
LLVM 错误:程序使用了无法解析的外部函数 'CFAbsoluteTimeGetCurrent'!
// A demonstration of both iterative and recursive algorithms for computing the Fibonacci numbers.
import CoreFoundation
// A recursive algorithm to compute the Fibonacci numbers.
func fibRec (n : Int) -> Double {
return (Double)(n < 3 ? 1 : fibRec(n - 1) + fibRec(n - 2))
}
// An iterative algorithm to compute the Fibonacci numbers.
func fibIter (n : Int) -> Double {
var f2 = 0.0
var f1 = 1.0
var f0 = 1.0
for _ in 0 ..< n {
f2 = f1 + f0
f0 = f1
f1 = f2
}
return f0
}
// Initialise array to hold algorithm execution times.
var fibTimes = [Double]()
// i is the ith Fibonacci number to be computed.
for i in 120..<129 {
var fibNum = 0.0
var fibSum = 0.0
// j is the number of times to compute F(i) to obtain average.
for j in 0..<5 {
// Set start time.
let startTime = CFAbsoluteTimeGetCurrent()
// Uses the recursive algorithm.
// fibNum = fibRec(i)
// Uses the iterative algorithm.
fibNum = fibIter(i)
fibTimes.insert(CFAbsoluteTimeGetCurrent() - startTime, atIndex: j)
}
// Compute the average execution time.
for p in fibTimes {
fibSum += p
}
fibSum = fibSum / 5
print("Fibonacci number \(i) is: \(fibNum)")
print("Execution time: \(fibSum) seconds")
}
【问题讨论】:
-
import Foundation也...不知道为什么需要这样做(任何人?),但在一分钟前检查过它并且它正在工作 -
@Alladinian 你应该回答,这就是解决方案。
-
@EricD。完毕。起初我很犹豫,因为我无法提供一个真正解释为什么这是有效的,但我想半答案总比没有答案好。