请教一下这个三角形的右边部分是怎么实现的
public class Tower2
{
final static int M=9;
static void count(int n,int k) //递归方法,输出一行
{
int i;
if (n==1) //在1前留空
for (i=1; i<=M-k; i++)
System.out.print(" ");
System.out.print(" "+n);
if (n<k)
{
count(n+1,k);
System.out.print(" "+n);
}
}
public static void main(String args[])
{
int i;
for (i=1; i<=M; i++)
{
count(1,i);
System.out.println();
}
}
}
/*
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
*/
[解决办法]
一步步的debug你就知道是怎么回事了。
关键是if (n<k)里的这一句
System.out.print(" "+n);
[解决办法]
可以把这个三角看成3各部分
比如第一行 8个空格 1
第二行 7个空格 1-2 1
第三行 6个空格 1-3 2-1
第四行 5个空格 1-4 3-1
.。。。
规律很好找吧
做一个循环
for(int i=1;i<=9;i++){
打印(9-i)个空格
打印1到i
打印(i-1)到1
}
[解决办法]
package example.tower;
public class Tower {
@SuppressWarnings("unused")
private final int size = 9;
public static String printTower(int size) {
if (size == 1)
{
System.out.println(" 1");
return "";
} else {
for (int i = 1; i <= size; i++)
{
if (i == size)
{
System.out.print(" " + i + " ");
for (int index = size - 1; index >= 0; index--)
{
if (index == 0)
{
System.out.println();
}
else
{
System.out.print(" " + index + " ");
}
}
} else
{
System.out.print(" " + i + " ");
}
}
return printTower(size - 1);
}
}
public static void main(String[] args) {
printTower(9);
}
}
刚刚写的,比较乱,差不多一个意思,楼主勉强看看吧。