递归实现旋转矩阵
#include <stdio.h>
#define N 5 //矩阵的阶数
void fun(int n, int first, int a[N][N])
{
int i;
if(n > N / 2)
{
return;
}
//每层递归赋值“一圈”
for(i = n; i < N - n; i++)
{
a[n][i] = first++;
}
for(i = n + 1; i < N - n - 1; i++)
{
a[i][N-n-1] = first++;
}
for(i = N - n - 1; i > n; i--)
{
a[N-n - 1][i] = first++;
}
for(i = N - n - 1; i > n; i--)
{
a[i][n] = first++;
}
fun(n+1, first, a);
}
int main()
{
int a[N][N] = {0};
fun(0, 1, a);
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
printf("%02d ", a[i][j]);
}
printf("\n");
}
return 0;
}