[Java] 纯文本查看 复制代码 public static void main(String[] args) {
int n = 4; //定义数组长
int[][] arr = new int[n][n]; //定义二维数组
int min = 1; //定义数组中最小的数
int count = 0; //定义圈数
fun(n,arr,min,count);
for (int i = 0; i < n; i++) { //遍历数组并打印
System.out.println(Arrays.toString(arr[i]));
}
}
/*
* 定义方法:
* 返回值类型 void
* 参数列表(int n,int[][] arr,int min ,int count)
*/
public static void fun(int n,int[][] arr,int min ,int count) {
for (int i = 0; i <= (n-1)*4 ; i++) { //设置循环用来给数组赋值
if(n == 0){ //如果组长为0则跳出循环
break;
}
if(n == 1){ //如果组长为1则赋值并跳出循环
arr[count][count] = min;
break;
}
if(i < n-1){ //第一组,数组向右赋值
arr[count][count+i%(n-1)] = min++;
} else if (i < (n-1)*2){ //第二组,数组向下赋值
arr[count+i%(n-1)][count+n-1] = min++;
} else if (i < (n-1)*3) { //第三组,数组向左赋值
arr[count+n-1][count+n-1-i%(n-1)] = min++;
} else if (i < (n-1)*4){ //第四组,素组向上赋值
arr[count+n-1-i%(n-1)][count] = min++;
} else { //当一圈赋值完毕,圈数加一,边长减二,递归调用
fun(n-2,arr,min,count+1);
}
}
}
|