螺旋矩陣遞歸解法:C語(yǔ)言實(shí)現(xiàn)

源代碼如下:
#include<iostream>
using namespace std;
int num = 1;
void func( int arr[100][100], int i, int j)
{
arr[i][j] = num;
num++;
if (arr[i + 1][j] != 0 && arr[i][j + 1] != 0 && arr[i - 1][j] != 0 && arr[i][j - 1] != 0)
{
return;
}
if (arr[i][j - 1] != 0 && arr[i - 1][j] != 0 && arr[i][j + 1] == 0)
func(arr, i, j + 1);//右移
if (arr[i][j + 1] != 0 && arr[i - 1][j] != 0 && arr[i + 1][j] == 0)
func(arr, i + 1, j);//下降
if (arr[i][j + 1] != 0 && arr[i + 1][j] != 0 && arr[i][j - 1] == 0)
func(arr, i, j - 1);//左移
if (arr[i][j - 1] != 0 && arr[i + 1][j] != 0 && arr[i - 1][j] == 0)
func(arr, i - 1, j);//上升
}
int main()
{
int arr[100][100];
int n = 0;
cin >> n;
for (int i = 0; i < (n + 2); i++)
{
for (int j = 0; j < (n +2); j++)
{
if (i == 0 || i == n+1 || j ==0 || j == n+1)
{
arr[i][j] = -1;
}
else {
arr[i][j] = 0;
}
}
}
func(arr, 1, 1);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <=n; j++)
{
printf("%4d", arr[i][j]);
}
cout << endl;
}
return 0;
}