この関数は、一般的に(intを使用して)実装していないときに正しく動作しますが、一般的なものにするときには、エラー、Swiftはコンパイルできません。私はfuncを使っていなくても、単に私のプロジェクトのファイルをクラッシュさせるだけです。Xcode 8.2 Swiftコンパイラエラー:「セグメンテーションフォールト:11」
Xcodeによれば、「内部エラーが発生しました。私は、スタックトレースをチェックし、エラーは "Segmentation Fault:11"と表示されます。私は下に私のコードを掲載します。
リクエストに応じてスタックトレースを送信することもできます。
import Foundation
func BinSearch<T : Comparable>(elements: [T], target: T) -> Int?{
let maxIndex = elements.count - 1
var rightIndex = maxIndex
var leftIndex = 0
var middleIndex : Int {return lround(Double((rightIndex + leftIndex))/2)}
var maxVal : T {return elements[rightIndex]}
var middleVal : T {return elements[middleIndex]}
var minVal : T {return elements[leftIndex]}
while elements[middleIndex] != target {
//test if in infinite loop for target within range of array but DNE
if leftIndex == middleIndex || rightIndex == middleIndex && rightIndex != 1{
return nil
}
//prevent infinite loop due to rounding method
if rightIndex == 1 {
return leftIndex
}
//core code
if target > middleVal {
leftIndex = middleIndex
}else {
rightIndex = middleIndex
}
}
return middleIndex
}