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();
        }
    }

}

 

posted @ 2021-10-30 10:14  独孤~华剑  阅读(40)  评论(0编辑  收藏  举报
独孤华剑