C:递归定义的计算矩阵行列式的程序

C:递归定义的计算矩阵行列式的程序,c,recursion,C,Recursion,我无法理解为什么这个程序为矩阵生成错误的行列式值。此程序使用对函数func()的递归调用,函数func()将参数矩阵转换为它的次变量,然后最终将其简化为单个元素。请帮助,此代码中的错误是什么 #include<stdio.h> #include<math.h> void display_(int arr[][4]) { int i,j; putchar('\n'); for(i=0;i<4;i++) {for(j=0;j<

我无法理解为什么这个程序为矩阵生成错误的行列式值。此程序使用对函数func()的递归调用,函数func()将参数矩阵转换为它的次变量,然后最终将其简化为单个元素。请帮助,此代码中的错误是什么

#include<stdio.h>
#include<math.h>
void display_(int arr[][4])
{
    int i,j;
    putchar('\n');
    for(i=0;i<4;i++)
        {for(j=0;j<4;j++)
            printf("%d\t",arr[i][j]);
        printf("\n");
        }
}
int func(int arr[][4],int i,int j,int order)
{
    if(order==1)
        return arr[0][0];
    return(pow(-1,i+j)*arr[i][j]*func(arr,i+1,j+1,order-1));
}
int main()
{
    int i,j,matrix[4][4];
    printf("\nEnter the elements to the matrix : ");
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            scanf("%d",&matrix[i][j]);
    display_(matrix);
    printf("\nDeterminant : %d",func(matrix,0,0,4));
}
#包括
#包括
无效显示(int arr[][4])
{
int i,j;
putchar('\n');

对于(i=0;i,这不是正确的公式。请参阅

是否要实现拉普拉斯公式?在这种情况下,需要对所有行求和,然后递归计算次项。这是通过删除第i行和第j列而从a中得到的矩阵的行列式。这就是递归使用函数的地方

或者你想实现莱布尼兹公式吗?在这种情况下,你需要一个求和并迭代所有可能的排列,然后是一个乘积,在那里你迭代行(或列)的数量。但是你不需要递归


注意到这里有很多类似的问题,例如,或者,

标签应该是C,而不是C++。代码中没有C++,你不会在C++中这样写。而且,在这种情况下,如果代码只使用一个<代码>返回< /代码>,用三元运算器将变得更加清楚。对不起,先生,你是Rey。t、 1.非常感谢!