美文网首页JAVA程序员
打印杨辉三角详解(一)

打印杨辉三角详解(一)

作者: 波斯狼酒 | 来源:发表于2018-06-07 22:52 被阅读45次

1.杨辉三角部分性质

图片.png

a.每行端点与结尾数字为1
b.部分数等于他“肩膀”上数的和
c.第n行有n个数

2.思路介绍(JAVA为例)

分两步1.数组中存储如下


图片.png

2.打印出如下


图片.png

3.代码详解(最下方有完整代码)

i. 首先实例化一个数组

  • 观察思路介绍中步一的数列:
    a.行列相同(以6行为例)
        int row=6;//行数,列数

注意:每行的列数都不要相同,因为数组初始化为0,打印效果不好

      int[][] Pascal_Triangle  = new int[row][];

        for (int i=0;i<row;i++){//分配每行空间
            Pascal_Triangle [i]=new  int[i+1];
        }

ii.为数组赋值

  • 因为每行列数不同,每打印一个数字j++n行打印n个数,当列>行时j>i完成,后直接state=row+1跳出循环
  • 用try catch语句捕获异常,当他肩膀上没有数字时,即为边界数


        for (int i=0;i<row;i++){
            for (int j=0;j<row;j++){
                if (i<j){
                    j=row;
                    continue;
                }
                try{
                    Pascal_Triangle [i][j]=Pascal_Triangle [i-1][j]+Pascal_Triangle [i-1][j-1];
                }catch (Exception e){
                    Pascal_Triangle [i][j]=1;
                    continue;
                }
            }
        }

iii.调整输出

  • 观察下图:(每个数后加了空格)
    A.行数同列翻倍,即n行2n列
    B.第一行所在列为n列,即(1,n)
    C.从第一行往下,没下一行少一空格


    图片.png
for (int i=0;i<row;i++){
            for (int k=0;k<row-1*i;k++){
                System.out.print(" ");
            }//每行前空格
            for (int j=0;j<2*row;j++){

                try{
                    System.out.print(Pascal_Triangle [i][j]);
                    System.out.print(" ");
                }catch (Exception e){
                    continue;
                }


            }
            System.out.println();
        }

4.完整代码


public class Demo15 {
    public static void main(String[] args) {
        int row=6;//行数,列数
        int[][] Pascal_Triangle  = new int[row][];

        for (int i=0;i<row;i++){//分配每行空间
            Pascal_Triangle [i]=new  int[i+1];
        }

        for (int i=0;i<row;i++){
            for (int j=0;j<row;j++){
                if (i<j){
                    j=row;
                    continue;
                }
                try{
                    Pascal_Triangle [i][j]=Pascal_Triangle [i-1][j]+Pascal_Triangle [i-1][j-1];
                }catch (Exception e){
                    Pascal_Triangle [i][j]=1;
                    continue;
                }
            }
        }


        for (int i=0;i<row;i++){
            for (int k=0;k<row-1*i;k++){
                System.out.print(" ");
            }//每行前空格
            for (int j=0;j<2*row;j++){

                try{
                    System.out.print(Pascal_Triangle [i][j]);
                    System.out.print(" ");
                }catch (Exception e){
                    continue;
                }


            }
            System.out.println();
        }
       
    }
}


相关文章

网友评论

    本文标题:打印杨辉三角详解(一)

    本文链接:https://www.haomeiwen.com/subject/hxbnsftx.html