直角杨辉三角
杨辉三角的规律是每行数字的第一列和最后一列的数字都是1,从第三行开始,除去第一列和最后一列都为数字1以外,其余每列的数字都等于它上方两个数字之和。例如下面图片中7字形圈起来的:4 = 3 + 1、35 = 15 +20。
代码实现:
public class YangHuiTriangle {public static void main(String[] args) {int[][] yangHui = new int[10][];for(int i = 0;i < yangHui.length;i++) {yangHui[i] = new int[i+1];yangHui[i][0] = yangHui[i][i] = 1;for(int j = 1;j < yangHui[i].length - 1;j++) {yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];}}for(int i = 0;i < yangHui.length ;i++) {for(int j = 0;j <yangHui[i].length;j++) {System.out.print(yangHui[i][j] + " ");}System.out.println();} }
}
▲yangHui.length : 表示数组的行数 (整个程序中它的值都为 10 )
▲yangHui[i].length : 表示数组的列数(它的值等于 i+1 )
说明:其中 j 的取值范围之所以是 j = 1 , j < yangHui[i].length - 1;因为从第三行开始,除去第一列和最后一列都为数字1以外,其余每列的数字都等于它上方两个数字之和。因此我们在第一行和第二行不需要用到第二个 for 循环。
① i = 0, j = 1, yangHui[ i ].length - 1 = 0, j < 0 不符合,不执行第二个循环,回到第一个循环
② i = 1, j = 1, yangHui[ i ].length - 1 = 1, j < 1 不符合,不执行第二个循环,回到第一个循环
由此给第一行和第二行赋了值,接着往下:
③ i = 2, j = 1, yangHui[ i ].length - 1 = 2, j < 1 符合,执行第二个循环,开始给第三行和后面行数除去第一列和最后一列的其他列赋值,至此直到循环结束,再遍历数组就可以得到杨辉三角。
int[][] yangHui = new int[10][]; 只需要把 10 替换成其他数字,就可以得到你想要的杨辉三角的行数
等腰杨辉三角
public class YHtriangle {public static void main(String[] args){int[][] YangHui = new int[10][];for(int i = 0;i < YangHui.length;i++) {//给第i行开辟i+1个空间YangHui[i] = new int[i+1];//给每一行的首位元素赋值,根据规律都赋值为1YangHui[i][0] = YangHui[i][i] = 1;//j=1是为了从第三行开始给中间元素赋值(根据杨辉三角规律从第三行开始)for(int j = 1;j < YangHui[i].length - 1;j++) {YangHui[i][j] = YangHui[i-1][j] + YangHui[i-1][j-1];}}//直角输出for(int i = 0;i < YangHui.length;i++) {for(int j = 0;j < YangHui[i].length;j++) {System.out.print(YangHui[i][j] + " ");}System.out.println();}//等腰输出for(int i = 0;i < YangHui.length;i++) {for(int j = 0;j < YangHui.length - i;j++) {System.out.print(" ");}for(int k = 0;k <= i;k++) {//System.out.print(YangHui[i][k] + " ");System.out.format("%4d", YangHui[i][k]);//格式化,每个位置固定占有4个字符的 空间}System.out.println();}}}
运行结果:
注:有什么问题评论区留言,当天回复