• 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();
            }
        }
    
    }
  • 相关阅读:
    Android调用Camera API 拍照导致图片变形
    [转]Android PorterDuff.Mode效果
    Android视频录制
    Android调用Camera API 拍照
    Android调用系统拍照
    android:windowIsTranslucent影响Activity生命周期onStop
    ProgressBar自定义之后图片拉伸的解决办法
    android开源ORM框架OrmLite使用教程
    AutoCompleteTextView源码分析
    Android App安全加固
  • 原文地址:https://www.cnblogs.com/hua-jian/p/15484406.html
Copyright © 2020-2023  润新知