我不明白爲什麼這個程序產生矩陣的錯誤行列式值。這個程序使用函數func()的遞歸調用,該函數將參數矩陣轉換爲次要函數,然後最終簡化爲單個元素。請幫忙,這段代碼中有什麼錯誤..?C:遞歸定義的程序來計算矩陣的行列式
#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));
}
標籤應該是C而不是C++。代碼中沒有C++,你不會在C++中這樣寫它。 –
此外,在這樣的情況下,如果你只用一個'return'和三元運算符,'func'會更清晰。 –
對不起,先生你說得對.. – pacman7845421