谁能帮我看看这段递归代码为什么错误,调试好多遍了
#define N 10
void show(int(*a)[N])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
printf("%3d", a[i][j]);
}
printf("\n");
}
}
void loop5(int(*a)[N], int i, int j, int k)
{
static max = 0;
static temp = 1;
if (k>=(N+1)/2)
{
return;
}
else
{
if (j < N - k)
{
a[i][j++] = temp++;
max=1;
return loop5(a, i, j, k);
}
if (max == 1)
{
j--;
i++;
}
if (i < N - k)
{
a[i++][j] = temp++;
max = 2;
return loop5(a, i, j, k);
}
if (max == 2)
{
i--;
j--;
max = 0;
}
// if (j >= k)
// {
// a[i][j] = temp++;
// max = 3;
// return loop5(a, i, j - 1, k);
// }
// if (max == 3)
// {
// j++;
// i--;
// max = 0;
// }
//
//
// if (i > k)
// {
// a[i][j] = temp++;
// max = 4;
// return loop5(a, i - 1, j, k);
// }
// if (max == 4)
// {
// i++;
// j++;
// max = 0;
// }
return loop5(a, i, j, k + 1);
}
}
void main()
{
int a[N][N] = { 0 };
loop5(a, 0, 0, 0, 0);
show(a);
system("pause");
}
里面的4段递归,前面2段 显示是正确,后面这2段 不知道为什么一起运行就错误,求大神帮忙看看 哪里错了?还是说整个递归本来就有问题 只是我没发现?