实现思路:我们可以先把杨辉三角想象成一个空的二维数组,然后再给它赋值输出即可。

关键在于如何赋值:仔细观察上图可以得出除了每一行第一个数以及最后一个数(都是1)

中间的数字规律就是:a[ i ][ j ] = a[ i - 1 ][ j - 1 ] + a[ i - 1 ][ j ]

实现代码:

public class Triangle {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //输入数字控制杨辉三角的层数
        int layer = scanner.nextInt();
        //利用二维数组的结构实现(容易赋值)
        int[][] triangle = new int[layer][layer];
        //外层循环控制行的赋值
        for (int i = 0; i < triangle.length; i++) {
            //当i=0,j按照步长为1往后赋值(每一行数字的个数等于行数,所以循环次数就是i)
            for (int j = 0; j <= i; j++) {
                //每行第一个数跟最后一个数都是1
                if (j == 0 || i == j){
                    triangle[i][j] = 1;
                }else {
                    //杨辉三角的规律
                    triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
                }
                //赋值完就输出
                System.out.print(triangle[i][j] + " ");
            }
            //保证换行
            System.out.println();
        }
    }
}

相信大家更多的是看到以下的杨辉三角:

其实个只是改变了输出格式而已,核心代码还是上面部分的代码。为了更好的理解,我们先实现下面的*输出(先拆开写,再合并)。

*******           

******

*****

****

***

**

*

 拆开:

        for (int i = 0; i < 7; i++) {
            System.out.print("*");
        }
        System.out.println();
        for (int i = 0; i < 6; i++) {
            System.out.print("*");
        }
        System.out.println();
        for (int i = 0; i < 5; i++) {
            System.out.print("*");
        }
        System.out.println();
        for (int i = 0; i < 4; i++) {
            System.out.print("*");
        }
        System.out.println();
        for (int i = 0; i < 3; i++) {
            System.out.print("*");
        }
        System.out.println();
        for (int i = 0; i < 2; i++) {
            System.out.print("*");
        }
        System.out.println();
        for (int i = 0; i < 1; i++) {
            System.out.print("*");
        }

 合并:

        for (int i = 0; i < 7; i++) {
            for (int j = 0; j < 7 - i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

 到这里其实我们已经差不多实现等腰的杨辉三角了,我们最后把*换成空格就ok了。

public class Triangle {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //输入数字控制杨辉三角的层数
        int layer = scanner.nextInt();
        //利用二维数组的结构实现(容易赋值)
        int[][] triangle = new int[layer][layer];
        //外层循环控制行的赋值
        for (int i = 0; i < triangle.length; i++) {
            //当i=0,j按照步长为1往后赋值(每一行数字的个数等于行数,所以循环次数就是i)
            for (int j = 0; j <= i; j++) {
                //每行第一个数跟最后一个数都是1
                if (j == 0 || i == j){
                    triangle[i][j] = 1;
                }else {
                    //杨辉三角的规律
                    triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
                }
            }
        }
        for (int i = 0; i < triangle.length; i++){
            for (int j = 0; j < triangle.length - i; j++) {
                //*替换成" "
                System.out.print(" ");
            }
            //替换的同时输出杨辉三角
            for (int k = 0; k <= i; k++) {
                System.out.print(triangle[i][k] + " ");
            }
            //保证换行
            System.out.println();
        }
    }
}

阅读全文
AI总结
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐