螺形矩阵用C语言怎么写
时间: 2024-10-09 14:00:48 浏览: 32
在C语言中,我们可以使用嵌套循环和数组来模拟递归过程生成螺形矩阵。这里提供一个简单的示例,它会生成一个5x5的螺形矩阵,你可以根据需要修改数组大小和递归参数。
```c
#include <stdio.h>
#define ROWS 5
#define COLS 5
void printSpiral(int matrix[ROWS][COLS], int r, int c, int n) {
if (r < n && c < n) { // 未到边界
printf("%d ", matrix[r][c]);
if (c < n - 1) printSpiral(matrix, r, c + 1, n); // 右边
if (r < n - 1) printSpiral(matrix, r + 1, c, n); // 下方
if (r > 0) printSpiral(matrix, r - 1, c, n); // 上方
if (c > 0) printSpiral(matrix, r, c - 1, n); // 左边
}
}
int main() {
int matrix[ROWS][COLS] = {{0}};
int r = 0, c = 0;
for (int i = 1; i <= ROWS*COLS; i++) {
matrix[r][c] = i;
// 按照螺旋顺序移动
if (r > 0) printSpiral(matrix, r - 1, c, ROWS);
if (c < ROWS - 1) printSpiral(matrix, r, c + 1, ROWS);
if (r < ROWS - 1) printSpiral(matrix, r + 1, c, ROWS);
if (c > 0) printSpiral(matrix, r, c - 1, ROWS);
r = (r == ROWS-1) ? 0 : r+1; // 旋转到下一个螺旋方向
c = (c == 0) ? ROWS-1 : c-1;
}
return 0;
}
```
运行此程序将打印出一个5x5的螺形矩阵。注意,这个代码并没有真正的递归,而是通过嵌套循环实现了类似的效果。如果你想要真正的递归版本,可以考虑将上述代码封装到一个递归函数中。
阅读全文