A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Kikyou2014 中级黑马   /  2014-11-4 14:27  /  983 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 spiral(5);
  6.         }
  7.         /**
  8.          * 此方法用于描述当前点在arr方阵中的坐标值(x,y),被打印的当前圈的长度len,以及变化的值value
  9.          * */
  10.         private static void spiral(int[][] arr,int value,int len,int x,int y)
  11.         {
  12.                 if(len<=0)//这里为递归结束条件,即圈维度小于0时,结束递归
  13.                         return;
  14.                 for(int j=0;j<len;j++)//横向填充
  15.                 {
  16.                         arr[x][y]=value;
  17.                         y++;
  18.                         value++;
  19.                 }
  20.                 y--;
  21.                 value--;
  22.                 for(int i=0;i<len;i++)//纵向填充
  23.                 {
  24.                         arr[x][y]=value;
  25.                         x++;
  26.                         value++;
  27.                 }
  28.                 x--;
  29.                 y--;
  30.                 len--;
  31.                
  32.                
  33.                 for(int j=0;j<len;j++)//横向填充
  34.                 {
  35.                         arr[x][y]=value;
  36.                         y--;
  37.                         value++;
  38.                 }
  39.                 y++;
  40.                 value--;
  41.                 for(int i=0;i<len;i++)//纵向填充
  42.                 {
  43.                         arr[x][y]=value;
  44.                         x--;
  45.                         value++;
  46.                 }
  47.                 x++;
  48.                 y++;
  49.                 len--;
  50.                 spiral(arr,value,len,x,y);//进入下一轮递归
  51.         }
  52.         public static void spiral(int n)
  53.         {
  54.                 int[][] arr=new int[n][n];
  55.                 spiral(arr,1,arr.length,0,0);
  56.                 printArr2(arr);
  57.         }
  58.         public static void printArr2(int[][] arr)
  59.         {
  60.                 for(int[] array:arr)
  61.                 {
  62.                         for(int value:array)
  63.                         {
  64.                                 System.out.print(value+"\t");
  65.                         }
  66.                         System.out.println();
  67.                         System.out.println();
  68.                 }
  69.         }
  70. }
复制代码

  1. <p> </p>
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马