@Java
“杨辉三角”
大家好,我是Ziph!
我给大家介绍什么是“杨辉三角”!
每个数等于它上方两数之和,并且每行数字左右对称,由1开始逐渐变大。
方案1(数组):
import java.util.Scanner;
public class ArrayYangHui {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要打印“杨辉三角”的行数:");
int rows = sc.nextInt();
// 定义数组,定义n行n列的数组
int[][] nums = new int[rows][rows];
// 每一行的第一列和最后一列都是1
for (int i = 0; i < nums.length; i++) {
nums[i][0] = 1;
nums[i][i] = 1;
}
// 从第三行开始上面数之和等于下面数的值,i控制行
for (int i = 2; i < rows; i++) {
// 从第二列开始,j控制列
for (int j = 1; j < rows; j++) {
// 每个数等于它上方两数之和(上一行的上一列+上一行的同一列)
nums[i][j] = nums[i - 1][j - 1] + nums[i - 1][j];
}
}
// 打印输出杨辉三角
for (int i = 0; i < rows; i++) {
for (int j = 1; j <= rows - i; j++) {
System.out.print("\t");
}
// 并非每行中的每一列都打印,所以j的截止条件不是j<arr1[i].length,是j<=i
for (int j = 0; j <= i; j++) {
System.out.print(nums[i][j] + "\t\t");
}
System.out.println();
}
}
}
其实“杨辉三角”考的就是数组知识,纯for循环可以不会,但是只要知道纯for循环也是可以打印出的。所以因涉及到不简单的算法,纯for循环打印“杨辉三角”的方案我就不给大家讲解了。
方案2(纯for循环):
import java.util.Scanner;
public class TestYangHui {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入行数:");
int rows = sc.nextInt();
//控制行数
for (int i = 1; i <= rows; i++) {
//控制空格列数
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
//控制数字列数
int cols = 1;
for (int k = 1; k <= i; k++) {
System.out.print(cols + " ");
cols = cols * (i - k) / k;
}
System.out.println();
}
}
}
执行结果:
有问题请大家留言回复!