java,public class YangHuiTriangle {, public static void main(String[] args) {, int numRows = 5;, int[][] triangle = generateYangHuiTriangle(numRows);, printYangHuiTriangle(triangle);, },, public static int[][] generateYangHuiTriangle(int numRows) {, int[][] triangle = new int[numRows][];, for (int i = 0; i< numRows; i++) {, triangle[i] = new int[i + 1];, triangle[i][0] = triangle[i][i] = 1;, for (int j = 1; j< i; j++) {, triangle[i][j] = triangle[i 1][j 1] + triangle[i 1][j];, }, }, return triangle;, },, public static void printYangHuiTriangle(int[][] triangle) {, for (int i = 0; i< triangle.length; i++) {, for (int j = 0; j< triangle[i].length; j++) {, System.out.print(triangle[i][j] + " ");, }, System.out.println();, }, },},
“杨辉三角(Pascal’s Triangle)是数学中一个非常著名的几何图形,由法国数学家布莱兹·帕斯卡(Blaise Pascal)发现,它的特点是每一行的数字都是二项式系数,即组合数,杨辉三角的第n行(从0开始计数)表示的是二项式(x + y)^n的展开系数,第5行的1,4,6,4,1对应于(x + y)^5 = x^5 + 5*x^4*y + 10*x^3*y^2 + 10*x^2*y^3 + 5*x*y^4 + y^5。
我们将展示如何使用Java编程语言来生成杨辉三角。
代码实现
2.1 方法一:使用二维数组
public class YangHuiTriangle { public static void printYangHuiTriangle(int numRows) { int[][] triangle = new int[numRows][]; for (int i = 0; i < numRows; i++) { triangle[i] = new int[i + 1]; triangle[i][0] = triangle[i][i] = 1; for (int j = 1; j < i; j++) { triangle[i][j] = triangle[i 1][j 1] + triangle[i 1][j]; } } for (int i = 0; i < numRows; i++) { for (int j = 0; j <= i; j++) { System.out.print(triangle[i][j] + " "); } System.out.println(); } } public static void main(String[] args) { printYangHuiTriangle(10); } }
2.2 方法二:不使用数组
public class YangHuiTriangleWithoutArray { public static void printYangHuiTriangle(int numRows) { for (int i = 0; i < numRows; i++) { for (int k = 0; k <= i; k++) { if (k == 0 || k == i) { System.out.print("1 "); } else { int temp = 1; for (int j = 1; j <= k; j++) { temp *= i j + 1; temp /= j; } System.out.print(temp + " "); } } System.out.println(); } } public static void main(String[] args) { printYangHuiTriangle(10); } }
相关问题与解答
问题1:为什么杨辉三角的第n行的数字之和等于2^n?
解答:杨辉三角的第n行的数字之和等于2^n,这是因为这些数字实际上是二项式(1 + 1)^n的展开系数,根据二项式定理,(1 + 1)^n的展开式为:
[ (1 + 1)^n = sum_{k=0}^{n} C(n, k) * 1^{n-k} * 1^k ]
其中C(n, k)表示从n个元素中选择k个元素的组合数,也就是杨辉三角第n行第k列的数字,所有数字之和就是:
[ sum_{k=0}^{n} C(n, k) = 2^n ]
问题2:如何在Java中打印倒序的杨辉三角?
解答:要打印倒序的杨辉三角,可以先计算出完整的杨辉三角,然后按行逆序输出每一行,以下是实现的代码示例:
public class InvertedYangHuiTriangle { public static void printInvertedYangHuiTriangle(int numRows) { int[][] triangle = new int[numRows][]; for (int i = 0; i < numRows; i++) { triangle[i] = new int[i + 1]; triangle[i][0] = triangle[i][i] = 1; for (int j = 1; j < i; j++) { triangle[i][j] = triangle[i 1][j 1] + triangle[i 1][j]; } } for (int i = numRows 1; i >= 0; i--) { for (int j = 0; j <= i; j++) { System.out.print(triangle[i][j] + " "); } System.out.println(); } } public static void main(String[] args) { printInvertedYangHuiTriangle(10); } }
小伙伴们,上文介绍了“用java杨辉三角_Java”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1102231.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复