I've a serious problem that I'm struggling about not one day or two, about three days respectively or abit more for coding a code to find all possible path of binary maze(just included values 0 and 1, we can just go down/left/up..not diagonally)-tried many methods for coding it and at last I decided a recursion method-I've done with the serious recursion part and all go well -appearing below-, but I dont know why when I compile it, showing there're errors and it gives also a wrong result of, can anyone please help me!!? I'm not meaning forcing you for writing a code, actually the code is already done just need some modifications/tips-as I'm a new programmer and apparently that's considered as a difficult part for noobs, I appreciate your attitudes and cooperation.

Here's the code I've done with:

I really dont know what's wrong with my code!! and I assure that the recursion part is correct absolutely, I deeply think the error in int main body not in the function itselfs.. If you can tell me what should be re-edited in my code to works finely as appreciated very much.Code:#include <stdio.h>#include<string.h> #define M 4 // M is a symbol of a maze's rows. #define N 4 // N is a symbok of a maze's verticals. // Symbols: // '1' = open-safe way. // '0' = closed/blocked. bool validCell(int maze[M][N], int r_idx, int c_idx); bool findPath(int maze[M][N], int r_idx, int c_idx, int path[N][N]); void display_maze(void); int main(void) { char maze[N][M] = {{ 0,0,1,0 }, { 1,1,1,0 }, { 0,1,1,0 }, { 0,1,1,1 }}; int i,j; //find the path if available// if (findPath(maze,0,0,path)) { printf("success");} else printf("failed"); return 0; } // check if we can move to a particular cell// bool validCell(int maze[M][N], int r_idx, int c_idx) { if (r_idx < 0 || r_idx >= M) { // invalid M index return false; } if (c_idx < 0 || c_idx >= N) { // inavlid N index return false; } if (maze[r_idx][c_idx] != 1) { // cannot move to this cell return false; } return true; } /* finds a path from cell (0,0) to cell (M-1,N-1) if a path exists (r_idx,c_idx) -> M index and N index of the cell */ bool findPath(int maze[M][N], int r_idx, int c_idx, int path[N][N]) { if ((r_idx == M-1) && (c_idx == N-1)) { // we have reached the last cell // this implies we have found a path path[r_idx][c_idx] = 1; return true; } if (validCell(maze,r_idx,c_idx)) { // cell is valid i.e we can move to the cell path[r_idx][c_idx] = 0; // recursively check if a path exists from the current valid (safe) cell // start checking from cell (r_idx+1,c_idx) if (findPath(maze,r_idx+1,c_idx,path)) { return true; } // start checking from cell (r_idx,c_idx+1) if (findPath(maze,r_idx,c_idx+1,path)) { return true; } path[r_idx][c_idx] = 1; return false; } return; }