java杨辉三角的实现

77 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉》一书中出现。具体的样子我给大家看张图。

image.png
要想在java中实现杨辉三角,首先要会二维数组和循环的知识。同时要知道杨辉三角的规律,才可把他实现。

规律

规律:第一行有一个元素,第n行有n个元素。每一行的第一个元素和最后一个元素都是1,从第三行开始,对于非第一个非元素和最后一个元素的值,等于上一行同列的数加同列-1的数的结果。

代码实现

public class Yanghuisanjiao {
    public static void main(String[] args) {
        int[][] yanghui = new int[5][];
        for (int j = 0; j < yanghui.length; j++){
            yanghui[j] = new int[j+1];
            for (int i = 0; i < yanghui[j].length; i++){
                if (i == 0 || i == yanghui[j].length-1){
                    yanghui[j][i] = 1;
                }else {
                    yanghui[j][i] = yanghui[j-1][i-1] + yanghui[j-1][i];
                }
            }
        }
        for (int j = 0; j< yanghui.length; j++){
            if (j != yanghui.length){
                for (int k =yanghui.length-j; k >0 ; k--){
                    System.out.print(" ");
                }
            }
            for (int i = 0; i < yanghui[j].length; i++){


                System.out.print(yanghui[j][i]+" ");
            }
            System.out.println("");
        }
    }
}

效果

image.png

代码解析

  1. 首先声明一个二维数组int[][] yanghui = new int[5][];5表示会打印5列
  2. 通过第一层的for循环yanghui[j] = new int[j+1];明确了每一列有多少元素。
  3. 通过第二层的for循环int i = 0; i < yanghui[j].length; 把每各元素分别是什么存入数组中。for中有一个条件判断,判断元素的位置是否在每个数组的开头或结尾。如果是的话把1存入其中。如果不是,就按照杨辉三角的规律每个数等于它上方两数之和。yanghui[j][i] = yanghui[j-1][i-1] + yanghui[j-1][i];的到元素存入数组。
  4. 通过for循环打印空格,使其成为三角形。if用来判断循环的次数,从而控制打印空格的列数。每行的空格数为yanghui.length-j数组的长度减去循环的次数。
  5. 通过双重for循环打印二维数组。