对递归不是很懂,求看下一段小代码(好人一生平安 求助大神)
#include <cstdio>
#include <cstring>
using namespace std;
int matrix[20][20];
int n; //全局函数
bool gen_cube(int i, int j, int step){
if (step == n * n + 1){
return true;
}
if (!matrix[i][j]){
matrix[i][j] = step;
// printf("%d\n",matrix[i][j]); //这里仅仅得到1-9的数据
}
else
return false;
gen_cube((n + i - 1) % n, (n + j + 1) % n, step + 1);
if (matrix[i][j] && step <= n * n){
// printf("%d\n",matrix[i][j]);
if (gen_cube((n + i + 1) % n, (n + j) % n, step + 1))
return true;
}
}
int main(){
int t;
scanf("%d", &t);
while (t--){
scanf("%d", &n);
gen_cube(0, n / 2, 1);
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
printf("%4d", matrix[i][j]);
}
printf("\n");
}
memset(matrix, 0, sizeof(matrix)); //用于初始化数组
}
return 0;
}
我想要知道get_cubt()函数是怎么递归的 。 这个程序到底怎么运行 求告诉下 详细点 真心不太懂