#include #include #define max 9 /*定義最大為9階行列式*/int fun(int n, int a[max][max] ); /*函式宣告*/
int main()
}; /*定義行列式*/
scanf("%d",&n); /*讀入階數*/
while( n != 0) /*輸入為0時退出程式*/
printf("%d\n", fun( n, a ) );
scanf("%d", &n);
}return 0;
}/*以下為計算行列式值的遞迴函式*/
int fun( int n, int a[max][max] )
}; /*定義陣列b並初始化*/
int i = 0, j = 0, sum = 0; /*i,j為行與列,sum為行列式的值*/
int x = 0,c = 0,p=0; /*用x判斷加與減,c,p為中間變數*/
if(n == 1)
return a[0][0];
for(i = 0; i < n; i++) /*此處大迴圈實現將余子式存入陣列b中*/
else /*否則行列式左移後再上移*/
b[c][j] = a[c+p][j+1];}}
if(i % 2 == 0) /*i+j(此時j=0,故只考慮i)為偶數,加法預算*/
else /*i+j為奇數,減法運算*/
sum += a[i][0] * fun(n - 1, b ) * x; /*計算行列式的值*/
}return sum; /*將值返回*/
}
行列式的計算
很多知識點都生疏了,標記一下。對於任意階行列式的定義一般是由二階 三階行列式的定義引出來的。因為二階和三階恰好是個特例,我們直接引入標準定義。解釋說明 上圖中 7 式中的p1 p2 是元素下標。總結來說。行列式就是 在該數表中找到n組數,且這n組數中每一組中的每乙個元素都不同行不同列,然後每一組各自...
求行列式的值
肯定要用遞迴,肯定要用陣列 用乙個二維陣列來表示這個矩陣,但是引數傳遞的時候我們不能確定這個矩陣的行數列數,所以編譯器會報錯 所以定義乙個一維陣列來模擬這個行列式,而一維陣列作為引數傳遞給函式時又不用指定大小,符合我們的需要。同時我們定義乙個結構體來表示這個余子式 typedef struct yu...
MyMathLib系列 行列式計算
靠人不如靠己,準備做自己得mathlib,在學校的時候,就想過把數學數理的東西都計算機化,但一直沒有時間去做這件事情,現在覺得空餘 時間比較閒,就做做這件事情,先從線性代數開始,畢竟這裡面的很多演算法,實際共走中都有用到。在做這些演算法的過程中,也體會到了 數學中的東西不是沒有用,而是你沒用到。下面...