- 闲话少说 , 代码才是干货
- public class PrintNumber2 {
- // 9 以内 , 看着比较好看
- private static int num = 9;
-
- public static void main(String[] args) {
- int[][] arr = new int[num][num];
- f(arr);
- print(arr);
- }
- static void fun(int[][] arr, int x, int y, int n, int flag) {
- if (arr[y][x] == 0)
- arr[y][x] = n++;
- else
- return;
- //flag 0 从左往右 1 右上到左下 2 从下往上
- switch (flag) {
- case 0:
- if (x < num - 1 && arr[y][x + 1] == 0)
- fun(arr, x + 1, y, n, flag);
- else {
- flag = 1;
- fun(arr, x - 1, y + 1, n, flag);
- }
- break;
- case 1:
- if (y < num - 1 && arr[y + 1][x - 1] == 0)
- fun(arr, x - 1, y + 1, n, flag);
- else {
- flag = 2;
- fun(arr, x, y - 1, n, flag);
- }
- break;
- case 2:
- if (arr[y - 1][x] == 0)
- fun(arr, x, y - 1, n, flag);
- else {
- flag = 0;
- fun(arr, x + 1, y, n, flag);
- }
- break;
- }
- }
- static void f(int[][] arr) {
- fun(arr, 0, 0, 1, 0);
- }
- static void print(int[][] arr) {
- int i, j;
- for (i = 0; i < num; i++) {
- for (j = 0; j < num; j++) {
- if (arr[i][j] == 0)
- continue;
- System.out.print(arr[i][j] + " ");
- if (arr[i][j] < 10) {
- System.out.print(" ");
- }
- }
- System.out.println();
- }
- }
- }
复制代码
这个就是按照画圈的顺序计算的 , 还是放二维数组里 |