想请问一下这个3阶以上行列式的计算该怎么实现?我的想法是用递归,但是后面的余子式想不明白

其实可以用高斯消元法的,难度上、时间复杂度上都比递归要好。但是既然题主要求,就这样写了:
#include <stdio.h>
#include <stdlib.h>
int **CreateMatrix(int n)
{
int **matrix = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; ++i)
{
matrix[i] = (int*)malloc(n * sizeof(int));
}
return matrix;
}
int **Minor(int n, int **matrix, int i, int j)
{
if (n == 1) return NULL;
int **result = CreateMatrix(n - 1);
for (int x = 0; x < n - 1; ++x)
{
for (int y = 0; y < n - 1; ++y)
{
result[x][y] = matrix[x < i ? x : x + 1][y < j ? y : y + 1];
}
}
return result;
}
int Determinant(int n, int **matrix)
{
if (n == 1) return matrix[0][0];
int det = 0;
for (int i = 0; i < n; ++i)
{
det += (i % 2 == 0 ? 1 : -1) * matrix[0][i] * Determinant(n - 1, Minor(n, matrix, 0, i));
}
return det;
}
int main()
{
int n;
printf("输入方阵的行列数: ");
scanf("%d", &n);
int **matrix = CreateMatrix(n);
printf("输入矩阵:\n");
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
scanf("%d", &matrix[i][j]);
}
}
printf("这个矩阵的行列式是 %d", Determinant(n, matrix));
return 0;
}