Learn-dsa..in 30 days!



























CC-12 : Implement matrix multiplication using recursion.

Description:

Given two input matrices, find and return their product.

Test cases and expected outputs:

Input Parameters Expected outputs
The 1st matrix :
1,2,3,
4,6,7,
5,8,0,
The 2nd matrix : 1,5,4,
2,6,0,
3,8,7,
The multiplied matrix :
14,41,25,
37,112,65,
21,73,20,

Pseudocode:

Initialize variables row3,col3, .k to 0 at class level.

matrixMultiplication (row1, col1,matrix1,row2,col2,matrix2, matrix3):

If row3>=row1 then return ; (base case).
If row3 < row1:
If col3
If k
Matrix3[row][col]+=matrx1[row3][k]*matrix2[k][cols3].
Increment k by 1.
Recursively call matrixMultiplication (row1, col1,matrix1,row2,col2,matrix2, matrix3).
Set k to 0.
Increment col3 by 1.
Recursively call matrixMultiplication (row1, col1,matrix1,row2,col2,matrix2, matrix3).
Set col3 to 0.
Increment row3++.
Recursively call matrixMultiplication (row1, col1,matrix1,row2,col2,matrix2, matrix3).
Return.

Code:

public class RecursionMatrixMultiplication {


private int row3 = 0; int col3 = 0; int k = 0;

public void matrixMultiplication(int row1, int col1, int[][] matrix1, int row2,
            int col2, int[][] matrix2, int[][] matrix3) {


if (row3 >= row1) { return;}

if (row3 < row1) {
	if (col3 < col2) {
			if (k < col1) {
				matrix3[row3][col3] += matrix1[row3][k] * matrix2[k][col3];
				k++;
				matrixMultiplication(row1, col1, matrix1, row2, col2, matrix2, matrix3);				
			}
			k = 0;
			col3++;
			matrixMultiplication(row1, col1, matrix1, row2, col2, matrix2, matrix3);
	}
	col3 = 0;
	row3++;
	matrixMultiplication(row1, col1, matrix1, row2, col2, matrix2, matrix3);
	}
}	
}

Click here to download and run code and test cases !