【算法题】矩阵行列式

请写出函数,接收一个 N 行 N 列的方阵并返回这个矩阵的行列式.

如何计算一个矩阵的行列式呢?让我们从最简单的情况开始:
一个 1 x 1 的矩阵 |a| 的行列式等于它自己 a.
一个 2 x 2 的矩阵 [[a, b], [c, d]] 或者

|a b| 
|c d|

行列式为a*d - b*c.

对于一个 n x n 大小的矩阵,其行列式的计算方式为将问题简化成计算 (n-1) x (n-1) 大小的矩阵的行列式.

对于 3 x 3 的情况, [[a, b, c], [d, e, f], [g, h, i]] 或者

|a b c|  
|d e f|  
|g h i|  

行列式计算方式为: a * det(a_minor) - b * det(b_minor) + c * det(c_minor)
其中 det(a_minor) 的意思是划去 a 所在的行和列的所有元素后剩下来的部分组成的矩阵的行列式:

|- - -|
|- e f|
|- h i|  

较大矩阵的行列式的计算方法也类似,例如,如果 M 是一个 4 x 4 的矩阵且第一行为 [a, b, c, d],那么:

det(M) = a * det(a_minor) - b * det(b_minor) + c * det(c_minor) - d * det(d_minor)

下面给出函数的开头部分:

def determinant(matrix):
    #your code here

上期答案:

def anagrams(word, words):
    return [i for i in words if sorted(word) == sorted(i)]