所以我試圖做一個行列式計算器並找到它的算法。爲了適應迅速,我不得不改變它一點。斯威夫特的矩陣行列式計算器
我想找到一個矩陣的行列式,它是6x7,但最後一列將不會包含在計算中。 (即計算的6x6矩陣)
即時得到這個錯誤:EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP, subcode=0x0)
誰能解釋這是什麼意思?
class ViewController: UIViewController {
var values = [Double]()
@IBAction func calculate(sender: AnyObject) {
for case let textField as UITextField in self.view.subviews {
if textField.text == "" {
textField.text = "0"
}
values.append(Double(textField.text!)!)
}
print(values)
// convert to 2d
var matrix = [[Double]]()
matrix = [[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]]
for var i = 0 ; i<6;i++ {
for var j = 0 ; j<7 ; j++ {
matrix[i][j] = values[i*7 + j]
}
}
print(matrix)
var n = 6
determ(matrix, n: 6)
}
func determ (matrix: [[Double]], var n:Int) -> Double {
var det:Double = 0
var p:Int, i:Int, j:Int,k:Int, h:Int
var temp: [[Double]] = []
for p = 0; p < n; p++ {
h = 0
k = 0
for i = 1; i < n ; i++ {
for j = 0; j < n; j++ {
if (j == p) {
continue
}
temp[h][k] = matrix[i][j]
k++
if k == (n-1) {
h++
k = 0
}
}
}
var power = Double(p)
var neg = Double(-1)
det = Double(det + matrix[0][p]) * pow(neg, power) * Double(determ(temp, n: n-1))
}
return det
}
你從哪裏得到錯誤?你的代碼究竟有什麼問題,請指定行或其他。 – sunshinejr
錯誤是對於行 temp [h] [k] = matrix [i] [j] 和控制檯說「致命錯誤:數組索引超出範圍」 – Abrgr