黑马程序员技术交流社区
标题:
递归实现打印螺旋方阵
[打印本页]
作者:
Kikyou2014
时间:
2014-11-4 14:27
标题:
递归实现打印螺旋方阵
class Test
{
public static void main(String[] args)
{
spiral(5);
}
/**
* 此方法用于描述当前点在arr方阵中的坐标值(x,y),被打印的当前圈的长度len,以及变化的值value
* */
private static void spiral(int[][] arr,int value,int len,int x,int y)
{
if(len<=0)//这里为递归结束条件,即圈维度小于0时,结束递归
return;
for(int j=0;j<len;j++)//横向填充
{
arr[x][y]=value;
y++;
value++;
}
y--;
value--;
for(int i=0;i<len;i++)//纵向填充
{
arr[x][y]=value;
x++;
value++;
}
x--;
y--;
len--;
for(int j=0;j<len;j++)//横向填充
{
arr[x][y]=value;
y--;
value++;
}
y++;
value--;
for(int i=0;i<len;i++)//纵向填充
{
arr[x][y]=value;
x--;
value++;
}
x++;
y++;
len--;
spiral(arr,value,len,x,y);//进入下一轮递归
}
public static void spiral(int n)
{
int[][] arr=new int[n][n];
spiral(arr,1,arr.length,0,0);
printArr2(arr);
}
public static void printArr2(int[][] arr)
{
for(int[] array:arr)
{
for(int value:array)
{
System.out.print(value+"\t");
}
System.out.println();
System.out.println();
}
}
}
复制代码
<p> </p>
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2