#include<iostream>
using namespace std;
int determ=0;//declare the variable to hold determinant value
\ \ \
int *insert(int *a,int start,int n) /* function to insert cofactor of a particular element into array and return the address of that array named add*/
{
int p=(n-1)*(n-1);// n is number of rows in n*n matrix =n
int *add=new int[p];// declaring an array for cofactor of start
int z=0,i=start+n+1;// i is now pointing to first elementt of its co factor
while(z<p)
{
if((i-n)%n!=0) // to exclude all elements in same row and column as start
{
*(add+z)=*(a+i);//assigning cofactor eles to array add
z++;
}
i++;// incrementing i
}
return add;// returning the address of function which holds cofactor eles
}
\ \ \
int fun(int *a,int n)// takes array address and number of cls in 2d matrix
{
int k=1;// k is either 1 or -1
if(2<n) // for l determinant more than 22 rows and 2 columns
{
for(int i=0;i<n;i++) // for all elements in first row
{
if(i%2!=0)// when i is odd
{
k=-1; // k=-1 for odd indices
}
int *init_add=insert(a,i,n);// i is the order of element wose cofactor is to be found
determ=determ+(k*(*(a+i))*fun(init_add,n-1));// calling function to find determinant of its cofacot matrix
}
return determ;// returning determinant value
}
else if(n==2) // determinant of order 2*2
{
int p=*(a)*(*(a+3))-(*(a+1)*(*(a+2))); // directly find determinant if the matrix is 2*2
return p;// return value of 2*2 determinant
}
\ \ \
int main()//
{
int a[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; // row major representation of 2 d matrix
cout<<fun(a,4);// calling function fun and passing array and n=3
//FUNCTION CALL
}
OUTPUT:
GARBAGE VALUE// LIKE 2345364637