# Matrix Multiplication using Recursion in C

The following C program, using recursion, performs Matrix multiplication of two matrices and displays the result. We use 2 D array to represent a matrix and resulting matrix is stored in a different matrix.

Here is the source code of the C program to display a linked list in reverse. The C program is successfully compiled and run on a Linux system. The program output is also shown below.

1. `/*`
2. ` * C Program to Perform Matrix Multiplication using Recursion`
3. ` */`
4. `#include <stdio.h>`
5. ` `
6. `void multiply(int, int, int [][10], int, int, int [][10], int [][10]);`
7. `void display(int, int, int[][10]);`
8. ` `
9. `int main()`
10. `{`
11. `    int a[10][10], b[10][10], c[10][10] = {0};`
12. `    int m1, n1, m2, n2, i, j, k;`
13. ` `
14. `    printf("Enter rows and columns for Matrix A respectively: ");`
15. `    scanf("%d%d", &m1, &n1);`
16. `    printf("Enter rows and columns for Matrix B respectively: ");`
17. `    scanf("%d%d", &m2, &n2);`
18. `    if (n1 != m2)`
19. `    {`
20. `        printf("Matrix multiplication not possible.\n");`
21. `    }`
22. `    else`
23. `    {`
24. `        printf("Enter elements in Matrix A:\n");`
25. `        for (i = 0; i < m1; i++)`
26. `        for (j = 0; j < n1; j++)`
27. `        {`
28. `            scanf("%d", &a[i][j]);`
29. `        }`
30. `        printf("\nEnter elements in Matrix B:\n");`
31. `        for (i = 0; i < m2; i++)`
32. `        for (j = 0; j < n2; j++)`
33. `        {`
34. `            scanf("%d", &b[i][j]);`
35. `        }`
36. `        multiply(m1, n1, a, m2, n2, b, c);`
37. `    }`
38. `    printf("On matrix multiplication of A and B the result is:\n");`
39. `    display(m1, n2, c);`
40. `}`
41. ` `
42. `void multiply (int m1, int n1, int a[10][10], int m2, int n2, int b[10][10], int c[10][10])`
43. `{`
44. `    static int i = 0, j = 0, k = 0;`
45. ` `
46. `    if (i >= m1)`
47. `    {`
48. `        return;`
49. `    }`
50. `    else if (i < m1)`
51. `    {`
52. `        if (j < n2)`
53. `        {`
54. `            if (k < n1)`
55. `            {`
56. `                c[i][j] += a[i][k] * b[k][j];`
57. `                k++;`
58. `                multiply(m1, n1, a, m2, n2, b, c);`
59. `            }`
60. `            k = 0;`
61. `            j++;`
62. `            multiply(m1, n1, a, m2, n2, b, c);`
63. `        }`
64. `        j = 0;`
65. `        i++;`
66. `        multiply(m1, n1, a, m2, n2, b, c);`
67. `    }`
68. `}`
69. ` `
70. `void display(int m1, int n2, int c[10][10])`
71. `{`
72. `    int i, j;`
73. ` `
74. `    for (i = 0; i < m1; i++)`
75. `    {`
76. `        for (j = 0; j < n2; j++)`
77. `        {`
78. `            printf("%d  ", c[i][j]);`
79. `        }`
80. `        printf("\n");`
81. `    }`
82. `}`

```\$ cc pgm23.c
\$ a.out
Enter rows and columns for Matrix A respectively: 2
2
Enter rows and columns for Matrix B respectively: 2
2
Enter elements in Matrix A:
12 56
45 78

Enter elements in Matrix B:
2 6
5 8
On matrix multiplication of A and B the result is:
304  520
480  894```

Sanfoundry Global Education & Learning Series – 1000 C Programs.

Here’s the list of Best Books in C Programming, Data-Structures and Algorithms

If you wish to look at other example programs on Matrix, go to C Programming Examples on Matrix. If you wish to look at programming examples on all topics, go to C Programming Examples.

If you find any mistake above, kindly email to [email protected]