Salve a tutti.Ho un problema con un programma.Questo è scritto sintatticamente in forma corretta solo che quando eseguo il debug mi esce questo errore "Segmentation fault(core dumped)".Non so che problema sia e come risolverlo.Premetto che questo programma deve poter dividere in modo RICORSIVO una matrice in 4 parti e mettere il carattere 'D' su ogni diagonale delle 4 parti della matrice prese in considerazione.Inoltre in alto a destra di ogni parte ci deve essere il carattere 'A'.Spero che mi possiate aiutare.Grazie in anticipo!!!!


codice:
#include <stdio.h>
#include <stdlib.h>
#define N 32
int x=0,y=0;
void stampa(char mat[][N]);
void inizializza(char mat[][N]);
void funz(char mat[][N],int z,int t);

int main()
{
    char mat[N][N];

      inizializza(mat);
      
funz(mat,0,0);
funz(mat,0,16);

    return 0;
}

void stampa(char mat[][N]){

   int i,j;
    for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         printf("%c|",mat[i][j]);
      }printf("\n");
    }printf("\n");
}

void funz(char mat[][N],int z,int t){

    x=z;
     y=t;
      int i=0,cont;
     mat[x][y+15]='A';
      for(;i<16;x++,y++,i++){
          mat[x][y]='D';
      }
       cont++;
         if(cont==2){
            stampa(mat); }
          else{
           return(funz(mat,z+16,t),cont++);
           }
}

void inizializza(char mat[][N]){

       int i,j;
        for(i=0;i<N;i++)
         for(j=0;j<N;j++)
         mat[i][j]='X';

         stampa(mat);
}