一、原理
杨辉三角形,也被称为帕斯卡三角形,是一种由数字构成的三角形,它的特点是每个数字都是它上方两个数字的和。这个三角形是以法国数学家布莱兹·帕斯卡和中国数学家杨辉命名的。
杨辉三角形的原理可以通过以下步骤来解释:
- 第一行只有一个数字 1。
- 第二行有两个数字 1。
- 从第三行开始,每一行的第一个数字和最后一个数字都是 1。中间的数字是上一行的相邻两个数字之和。例如,第三行的中间数字是上一行的第一个数字 1 和第二个数字 1 相加得到的,结果是 2。
- 每一行的数字个数比上一行多 1。
通过这样的规律,可以逐行构建杨辉三角形。每一行的数字可以用组合数来表示,例如第 n
行的第 k
个数字可以表示为 C(n-1, k-1)
,其中 n
表示行数,k
表示数字在该行的位置。文章来源:https://www.toymoban.com/news/detail-614017.html
杨辉三角形在组合数学、概率论、代数等领域有广泛的应用,它的性质和规律被广泛研究和应用于解决各种数学问题。文章来源地址https://www.toymoban.com/news/detail-614017.html
二、代码实现
//n 是杨辉三角形的行数
public void yanghui(int n) {
//创建列不固定的二维数组
int[][] arr = new int[n][];
for (int i = 0; i < n; i++) {
//每一行的数字个数
arr[i] = new int[i + 1];
for (int j = 0; j < i + 1; j++) {
//第一个和最后一个数字为 1
//其他数字为上一行相邻的两个数字之和
if (j == 0 || j == i) {
arr[i][j] = 1;
} else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
}
//打印杨辉三角形
System.out.println("杨辉三角形前 " + n + " 行数据如下:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
System.out.printf(arr[i][j] + "\t");
}
System.out.println();
}
}
- 时间复杂度:填充数组的循环需要执行
n*(n+1)/2
次,打印数组的循环需要执行n*(n+1)/2
次。因此,总的时间复杂度为O(n^2)
。 - 空间复杂度:二维数组
arr
的空间复杂度为O(n^2)
,用于存储杨辉三角形的数字。
三、运行结果
杨辉三角形前 10 行数据如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
到了这里,关于Java 实现杨辉三角形的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!