[code="c"]
#include
#include
#include
/*a为行列式,n为行列式的阶*/
int f(int **a,int n)
{
int i,j,k;
int len;/*子行列式的阶*/
int s=0;
len = n-1;
/*按照定义,初始化一个子行列式数组的空间*/
int **p = (int **)malloc(sizeof(int *)*len);
for(i=0;i<len;i++)
*(p+i) = (int *)malloc(len);
/*阶为2,按照定义计算*/
if( 2==n )
return a[0][0]*a[1][1]-a[1][0]*a[0][1];
for( k=0; k<n; k++)
{
for(i=0;i<len;i++)
for(j=0;j<len;j++)
{
if(i<k)
*(*(p+i)+j) = a[k][j+1];/*初始化子行列式的值*/
if(i>k)
*(*(p+i)+j) = a[k+1][j+1];
}
s += (int)pow(-1,i+j) * f(p,len);/*递归计算*/
}
free(p);
return s;
}
void main()
{
int a[3][3] = {1,2,4,5,7,9,12,11,8};
int **p = a;
printf("%d",f(p,3));
}
[/code]
[b][size=large]思路很清楚,就是按照定义求值,但调试总是出错,请大家指点下[/size][/b]
[b]问题补充:[/b]
一楼的童鞋,这里是二维数组,我想要体现维度
[b]问题补充:[/b]
主要是要调试成功,并且有结果