hj_杨辉三角
/** * @author hj * @Description: 打印杨辉三角 */ public class HjYhTriangle { public static void main(String[] args) { //打印行数,若行数>13 需要加大 空格数与数字占位数 int row = 13; for (int i = 1; i <= row; i++) { //打印空格,空格数是数字占位符的一半 for (int j = 1; j <= row - i; j++) { System.out.print(" "); } //打印一排数值 for (int j = 1; j <= i; j++) { // %4d 表示数字占4个位 System.out.printf("%4d", recursionFun(i, j)); } //换行 System.out.println(); } System.out.println(); System.out.println(); directFun(13); System.out.println(); System.out.println(); //打印行数,若行数>20 需要加大 空格数与数字占位数 directFun(20); } /** * 递归调用方法 * * @param num1 参数1 * @param num2 参数2 * @return int */ private static int recursionFun(int num1, int num2) { //每排的第一个数或者最后一个数,默认赋值1 if (num2 == 1 || num2 == num1) { return 1; } else { //中间的数是上排的两个数字之和 return recursionFun(num1 - 1, num2 - 1) + recursionFun(num1 - 1, num2); } } /** * 直接打印法 * * @param row 行数 */ private static void directFun(int row) { //声明一个二维数组 int[][] arr = new int[row][]; //遍历 for (int i = 0; i < row; i++) { // 打印空格,空格数量是数字占位的一半,这里用3位,最多可20行 for (int b = 0; b < row - 1 - i; b++) { System.out.print(" "); } // 二维数组的元素赋值一维数组,每横排的元素数量=第几排排数 arr[i] = new int[i + 1]; //遍历打印这一维数组横排 for (int j = 0; j < arr[i].length; j++) { //首尾元素值都是1 if (j == 0 || j == arr[i].length - 1) { arr[i][j] = 1; } else { //当前元素的值是上一排腰上的俩值之和.对应索引是 i-1,j-1与i-1,j arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } //格式化输出数值 System.out.printf("%6d", arr[i][j]); } //换行 System.out.println(); } } }