Define the determinant of a matrix a (written det(a)) recursively as follows:
1. if a is a 1 x 1 matrix, then det(a) = x
2. if a is of an order greater than 1, compute the determinant of a as follows:
a. Choose any row or column. For each element a[I, j] in this row or column, form the product:
power (-1, I + j) * a[I, j] * det(minor(a[I, j])
where I and j are the row and column positions of the element chosen, a[I, i] is the element chosen, det(minor(a[I, j]) is the determinant of the minor of a[I, j] and power (m, n) is the value of m raised to the nth power.
b. det(a) = sum of all these products.
Det(a) = Σ power(-1, I + j) * a[I, j] * det(minor(a[I, j]), for any j
or
Det(a) = Σ power(-1, I + j) * a[I, j] * det(minor(a[I, j]), for any i
Write a Java program that reads a, print a in matrix form, and prints the value of det(a), where det is a method that computes the determinant of a matrix.
As per the problem, write a program that uses a recursive algorithm to compute the determinant of a matrix. It should read a matrix, print it out, compute, and print the determinant. Your program should be able to evaluate multiple matrices on a single execution. Your program should handle matrices up to and including those of order 6. You are required to use an array for this problem. Your solution must be recursive.
Justify your data structures. Consider an iterative implementation. Would it be more efficient? What data structures would you choose in that case?
As a minimum, use the following eight matrices to test your program, formatted as shown to the right.
[5]
2 3
5 9
3 -2 4
-1 5 2
-3 6 4
2 4 5 6
0 3 6 9
0 0 9 8
0 0 0 5
2 4 5 6
0 0 0 0
0 0 9 8
0 0 0 5
2 0 0 0
0 3 0 0
0 0 9 0
0 0 0 5
2 4 0 6
1 3 0 0
4 0 0 8
2 5 0 5
6 4 6 4 6 4
1 2 3 4 5 6
6 5 4 3 2 1
3 2 3 2 3 2
4 6 4 6 4 6
1 1 1 1 1 1