zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    
    }
  • 相关阅读:
    JavaScript中get和set访问器的实现
    Vue render 函数和JSX语法的使用
    vue项目将第三方包以cdn的方式引入页面不显示
    今天帮忙HMF这位ui大神(傻)解决的小问题。
    SET
    webpack 折腾
    sass折腾
    gulp折腾
    css3
    js递归函数
  • 原文地址:https://www.cnblogs.com/hua-jian/p/15484406.html
Copyright © 2011-2022 走看看