Hi guys

Code:
#include<stdio.h>


void p(int n){
   
   if(n > 0){
     p(n - 2); 
     printf("%d ", n); 
     p(n - 1);
    }
} 
int main(void) {
   p(4);
   
return 0;   
}
explain me plz: why does it print :2 1 4 1 3 2 1

Also can you explain me what is this statement:
int (*func())[20];