本帖最后由 pengbeilin 于 2015-8-21 18:45 编辑
- public class Test9 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int n=4;//维度
- int arr[][] =new int[n][n];//所对应的二维数组
- int min = 1;//第一圈的第一个值值arr[0]=1
- int count = 0;//圈数
- cyc(n,arr,min,count);
-
- //for循环打印二维数组
- for (int i = 0; i < n; i++) {
- System.err.println(Arrays.toString(arr[i]));
- }
- }
- //循环 和递归思想一样的! 只是写法不同
- public static void cyc1(int n,int[][] arr,int min,int count){
- //for循环判断圈数 和 圈数的维度
- for (int j=n; j > 0;j-=2,count++ ) {
-
- for (int i = 0; i <=(n-1)*4; i++) {
- //当圈数为1时 直接赋值跳出
- if(j==1){
- arr[count][count]=min;
- break;
- }
- if(i<j-1){
- arr[count][count+i%(j-1)]=min++;//向右赋值
- }else if(i<(j-1)*2){
-
- arr[count+i%(j-1)][count+j-1]=min++;//向下赋值
- }else if(i<(j-1)*3){
-
- arr[count+j-1][count+j-1-i%(j-1)]=min++;//向左赋值
- }else if(i<(j-1)*4){
-
- arr[count+j-1-i%(j-1)][count]=min++;//向上赋值
- }
- }
- }
- }
- }
复制代码 参照别人递归写的循环 |