用 Java 打印杨辉三角
13/100
发布文章
weixin_69252724
未选择文件
杨辉三角
杨辉三角的规律-->
每个数等于它上方两数之和。
- 每行数字左右对称,由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
杨辉三角
在这里插入图片描述
杨辉三角的规律–>
每个数等于它上方两数之和。
每行数字左右对称,由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