很好理解就是运用递归还有函数的套用
话不多说直接上代码:
#计算代数余子式的函数
def getsubmatrix(matrix,submatrix,row,col,n):
p=0
q=0
for i in range (n):
for j in range(n):
if i!=row and j!=col:
submatrix[p][q]=matrix[i][j]
q+=1
if q==n-1:
q=0
p+=1
#计算行列式的函数
def deter(matrix,n):
submatrix =[[0]*(n-1)]*(n-1)#等价于 submatrix = [[0] * (n-1) for k in range(n-1)]
det=0
sign=1
if n==1:#递归终止条件:1 阶矩阵的行列式为其唯一元素的值
return matrix[0][0]
else:
for i in range(n):
getsubmatrix(matrix,submatrix,0,i,n)#计算代数余子式的子矩阵
det+=sign*matrix[0][i]*deter(submatrix,n-1)#递归计算行列式的值
sign=-sign#更新符号位
return det
while True:
N = 10
print("请输入方阵的阶数:")
n = int(input())
if n > N or n <= 0:
print('错误!请重新输入一个合法的阶数(1-%d)。\n ' % N)
else:
print("请输入 %d 阶方阵的元素:\n" % n)
matrix = [[0] * n for k in range(n)]
#print(matrix)
for i in range(n):
for j in range(n):
print("元素 a%d%d: ", i + 1, j + 1)
m = int(input())
matrix[i][j] = m
# print(matrix)
det = deter(matrix, n)
print('\n 行列式的值为:%d\n' % det)
若觉得不错点个赞🤓