用 Java 打印杨辉三角

本文涉及的产品
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 用 Java 打印杨辉三角

用 Java 打印杨辉三角
13/100
发布文章
weixin_69252724
未选择文件

                          杨辉三角

image.png

杨辉三角的规律-->

  1. 每个数等于它上方两数之和。

    1. 每行数字左右对称,由1开始逐渐变大。
    2. 第 n 行的数字有 n 项
      为了更直观的用杨辉三角的上下行规律来操作,将他的一看成是上一行的0与1 相加,所以将0补上后更好求解,如图
      image.png

    1..由规律可以知道,如果要打印杨辉三角的n行,那么每行要有2n+1个元素
    **所以要创建一个n行2
    n+1个列的二维数组**
    2..由于杨辉三角第一行的上一行没有数字,所以第一行的1必须是给定的
    3.在根据规律a[ i ][ j ]的元素等于a[ i-1 ][ j-1 ]与a[ i-1 ][ j+1 ]的元素之和

代码演示

public class Homework {
   
   
    static Scanner sr = new Scanner(System.in);
    static int n = sr.nextInt();

    public static void main(String[] args) {
   
   
        int a[][] = new int[n][2 * n + 1];//根据用户的输入来确定二维数组的大小
        a[0][n] = 1;                      //确定第一行 1 的位置,因为第一行不能用上面的规律,第一行没有上一行
        for (int i = 1; i < a.length; i++) {
   
   //用总结的规律来给除了第一行的元素外赋值
            for (int j = 1; j < a[0].length - 1; j++) {
   
   //因为每行的,第一列和最后一列没有左边元素和右边的右边的元素所=所有不能取到
                a[i][j] = a[i - 1][j - 1] + a[i - 1][j + 1];
            }
        }

        //打印杨辉三角
        for (int i = 0; i < a.length; i++) {
   
   
            int count = 0;
            for (int j = 0; j < a[0].length; j++) {
   
   
                if (a[i][j] == 0) {
   
   
                    System.out.print(" \t"); //不打印0,但要有位置所以打印空格
                }
                else {
   
   
                    System.out.print(a[i][j]+"\t");//
                    count++;//因为要换行打印,构造计数器
                }
                if (count == i+1) {
   
   //因为每行只有对应行数的非零数,所以当等于行数时候换行
                    System.out.println();break;//!!!此处要注意加上break,不然就会有多余的空格打印出来
                                               //我之前就因为这个想了好久^_^
                }
            }
        }
    }
}

有不足或者需改进的地方欢迎大家私信指出 O(∩_∩)O
杨辉三角
在这里插入图片描述

杨辉三角的规律–>

每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大。
第 n 行的数字有 n 项
为了更直观的用杨辉三角的上下行规律来操作,将他的一看成是上一行的0与1 相加,所以将0补上后更好求解,如图
在这里插入图片描述
1…由规律可以知道,如果要打印杨辉三角的n行,那么每行要有2n+1个元素
所以要创建一个n行2n+1个列的二维数组
2…由于杨辉三角第一行的上一行没有数字,所以第一行的1必须是给定的
3.在根据规律a[ i ][ j ]的元素等于a[ i-1 ][ j-1 ]与a[ i-1 ][ j+1 ]的元素之和
代码演示
public class Homework {
static Scanner sr = new Scanner(System.in);
static int n = sr.nextInt();

public static void main(String[] args) {
    int a[][] = new int[n][2 * n + 1];//根据用户的输入来确定二维数组的大小
    a[0][n] = 1;                      //确定第一行 1 的位置,因为第一行不能用上面的规律,第一行没有上一行
    for (int i = 1; i < a.length; i++) {//用总结的规律来给除了第一行的元素外赋值
        for (int j = 1; j < a[0].length - 1; j++) {//因为每行的,第一列和最后一列没有左边元素和右边的右边的元素所=所有不能取到
            a[i][j] = a[i - 1][j - 1] + a[i - 1][j + 1];
        }
    }

    //打印杨辉三角
    for (int i = 0; i < a.length; i++) {
        int count = 0;
        for (int j = 0; j < a[0].length; j++) {
            if (a[i][j] == 0) {
                System.out.print(" \t"); //不打印0,但要有位置所以打印空格
            }
            else {
                System.out.print(a[i][j]+"\t");//
                count++;//因为要换行打印,构造计数器
            }
            if (count == i+1) {//因为每行只有对应行数的非零数,所以当等于行数时候换行
                System.out.println();break;//!!!此处要注意加上break,不然就会有多余的空格打印出来
                                           //我之前就因为这个想了好久^_^
            }
        }
    }
}

}
有不足或者需改进的地方欢迎大家私信指出 O(∩_∩)O

相关文章
|
6月前
|
Java
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
55 4
|
9月前
|
Java 容器
Java集合类ArrayList应用 | 二维数组的集合类表示与杨辉三角实现
这是一个关于LeetCode第118题“杨辉三角”的问题解答摘要。题目要求生成一个杨辉三角的前n行,其中每一行都是由前一行的元素按规则生成的。杨辉三角的规律是:每一行的第一个和最后一个数是1,其他数是其上方两数之和。
79 4
|
9月前
|
Java
【Java每日一题】— —第二十题:杨辉三角(直角三角形)。
【Java每日一题】— —第二十题:杨辉三角(直角三角形)。
|
9月前
|
Java
【Java每日一题】— —第十七题:杨辉三角(等腰三角形)。
【Java每日一题】— —第十七题:杨辉三角(等腰三角形)。
|
9月前
|
Java
杨辉三角形(二维坐标基础题)——Java-二维数组版本
杨辉三角形(二维坐标基础题)——Java-二维数组版本
62 0
|
9月前
|
算法 C++ Java
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
67 0
|
Java
Java实现杨辉三角
Java实现杨辉三角
121 0
|
人工智能 Java
蓝桥杯 基础练习 杨辉三角形(Java)
蓝桥杯 基础练习 杨辉三角形(Java)
144 0
|
机器学习/深度学习 Java
Java 打印 杨辉三角
Java 打印 杨辉三角
137 0
|
4天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
45 14