数字旋转方阵的有条件输入

对于数字旋转方阵可以进行一圈输入为数字一圈输入为0交叉互换输入。以此为基础进行c++代码编写但是运行结果要么为纯数字要么全为0??这是为什么呢??
#include<stdio.h>
#define N 10
int data[N][N]={0};

void Full(int number,int begin,int size)
{
int i,j,k;
if(size==0) return;
if(size==1){
data[begin][begin]=number;
return;
}
i=begin;j=begin;
if((size%2)==1){
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
i++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
j++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
i--;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
j--;
}
}
else{
number=0;
for(k=0;k<size-1;k++)
{
data[i][j]=number;
i++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
j++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
i--;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
j--;
}
}
Full(number,begin+1,size-2);
return;
}

void OutPrint(int size)
{
int i,j;
for(i=0;i<size;i++){
for(j=0;j<size;j++)
{
printf("%4d",data[i][j]);
}
printf("\n");
}
}

int main()
{
int n;
printf("输入方阵阶数(小于10):\n");
scanf("%d",&n);
Full(1,0,n);
OutPrint(n);
return 0;
}

Full(number,begin+1,size-2);
---你这里size每次减去2,然后判断的时候用size%2==1
每次减去2,那么每次递归的size要么一直是奇数,要么一直是偶数,没有实现奇偶交叉啊