杨辉三角

杨辉三角

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

规律

1.每一行的头和尾值都是1
2.每一行的列数与行数一致
3.每列的值都等于上一行的是一列 + 上一行的当前列

思路:

将整个杨辉三角处理为一个二维数组 外层数组就表示整个杨辉三角 每一个内层数组表示每一行

public class HomeWork2 {
    public static void main(String[] args) {
        System.out.println("请输入行数");
        int n = new Scanner(System.in).nextInt();
        int[][] ints = pascalTra(n);
        printPascal(ints);
    }

    public static int[][] pascalTra(int n) {
        //创建表示杨辉三角的二维数组
        int[][] pascal = new int[n][];
        //为该二维数组创建n个数组作为元素
        for (int i = 0; i < n; i++) {
            //每一个内层数组的长度都与行数一致
            int[] row = new int[i + 1];
            for (int j = 0; j < row.length; j++) {
                //如果是当前行的第一列或者最后一列,则 值为1
                if (j == 0 || j == row.length - 1) {
                    row[j] = 1;
                } else {
                    //如果不是第一列也不是最后一列 则当前列的值一定等于 上一行的上一列+上一 行的当前列
                    row[j] = pascal[i - 1][j] + pascal[i - 1][j - 1];
                }
            }
            //代码执行到这里,说明当前行的每一个元素都被赋值了 将这个数组添加到pascal中
            pascal[i] = row;
        }
        return pascal;
    }
//打印数组
    public static void printPascal(int[][] ints) {
        for (int i = 0; i < ints.length; i++) {
            for (int j = 0; j < ints[i].length; j++) {
                System.out.print(ints[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值