本帖最后由 地狱天堂 于 2014-8-22 03:24 编辑
- public class Test4 {
- public static void main(String[] args) {
- System.out.println("*******从1开始,打印10行********");
- getNum(1,10);
- System.out.println("*******从2开始,打印5行*******");
- getNum(2,5);
- }
-
- //num第一行中间的数字,line=需要打印的行数
- public static void getNum(int num,int line){
- //定义二维需要多长?根据规律2行需要5个,3行需要7个,就定义个lenths=line*2+1的长度。
- int lenths=line*2+1;
- //定义个二维数组记数
- int[][] in=new int[line][lenths];
-
- //把数字插入到数组第一行中间。
- in[0][lenths/2]=num;
-
- //从第二行开始第n个(不包括第一个和最后一个),等于第一行的(n-1)+(n+1)
- for (int i = 1;i < line; i++) {
- for (int j = 1; j <lenths-1; j++) {
- in[i][j]=in[i-1][j-1]+in[i-1][j+1];
- }
- }
-
- //把数组中的0去除,然后打印
- StringBuilder str=new StringBuilder();
- for (int i = 0; i <line; i++) {
- for (int j = 0; j < lenths; j++) {
- if(in[i][j]==0){
- str.append(" ");
- continue;
- }
- str.append(in[i][j]);
- }
- str.append("\n");
- }
- System.out.println(str.toString());
- }
-
- }
复制代码
打印结果:
*******从1开始,打印10行********
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
*******从2开始,打印5行*******
2
2 2
2 4 2
2 6 6 2
2 8 12 8 2
|