1
我做了一個遞歸函數來計算矩陣的行列式的基礎上,輔助因子:Python的遞歸決定
# determinant of a 2x2 matrix
def det2(matrix):
return matrix[0][0]*matrix[1][1]-matrix[1][0]*matrix[0][1]
# recursive part
def recursion(matrix,somme=None,prod=1):
if(somme==None):
somme=[]
if(len(matrix)==1):
somme.append(matrix[0][0])
elif(len(matrix)==2):
somme.append(det2(matrix)*prod)
else:
for index, elmt in enumerate(matrix[0]):
transposee = [list(a) for a in zip(*matrix[1:])]
transposee.remove(transposee[index])
mineur = [list(a) for a in zip(*transposee)]
somme = recursion(mineur,somme,prod*matrix[0][index]*(-1)**(index+2))
return somme
def main(matrix):
return sum(recursion(matrix))
沒有什麼複雜的,但我不明白爲什麼這是行不通的。它確實在某些情況下給出了正確的答案,但並非全部。 當矩陣中有0時,我懷疑結果是錯誤的,但我不確定。
如果您有任何想法,
感謝
你能給出一個輸入矩陣的例子,其結果是不正確的,幷包括不正確的和所需的結果? – mkrieger1
[[4,6,3,5,1],[1,4,5,3,7],[6,5,1,5,6],[8,5,3,4,3], [6,0,7,0,7]] 預期結果:1335 結果:4695 – user5049567