C语言:函数编写没问题,但无法递归调用

我写的代码如下:

#include<stdio.h>
int sum=0;
int *pm,*pn;                                               //定义全局变量
void revolve(int m,int n,char a[m][n])
{
    int i=0,j=0;
    if(m!=1)
    while(((*pm)*(*pn))!=sum)
    {
        if(sum==0)                                        //把最外一圈输出
        {
            for(;a[i][j]!='\0';i++)
                printf("%c",a[i][j]),a[i][j]='\0',sum++;
            for(i--,j++;a[i][j]!='\0';j++)
                printf("%c",a[i][j]),a[i][j]='\0',sum++;
            for(j--,i--;a[i][j]!='\0';i--)
                printf("%c",a[i][j]),a[i][j]='\0',sum++;
            for(i++,j--;a[i][j]!='\0';j--)
                printf("%c",a[i][j]),a[i][j]='\0',sum++;
        }
        else
        {
            char b[m-2][n-2];                             //将剩余字符转存入另一个数组
            for(i=0;i<m-2;i++)
                for(j=0;j<n-2;j++)
                    b[i][j]=a[i+1][j+1];
            revolve(m-2,n-2,b);                           //递归调用
        }

    }
    else                                                   //当只有一行时,直接输出
    {
        for(;i<n;i++)
            printf("%c",a[0][i]);
        printf("\n");
    }
}
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);                                    //输入规格
    pm=&m,pn=&n;
    char a[m][n];
    for(int i=0;i<m;i++)                                   //输入
        for(int j=0;j<n;j++)
            getchar(),a[i][j]=getchar();
    revolve(m,n,a);                                        //螺旋输出
    return 0;
}

调试运行时发现revolve函数调用后并不会递归调用然后就结束了。

请问,这个问题出在哪了?

非常感谢!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^