欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java打印从1到最大的n位数

程序员文章站 2024-03-15 22:08:42
...
package offer;
/*
 * 打印从1到最大的n位数
 */
public class Print1ToMaxOfDigits {

    public static void main(String[] args) {
        int n = 5;
        method(n);
    }

    private static void method(int n) {
        int[] data = new int[n];
        //数组的第一位从0-9全排列
        for (int i = 0; i < 10; i++) {
            data[0] = i;
            printMethod(data, n, 0);
        }
    }

    private static void printMethod(int[] data, int n, int i) {
        //退出条件是最后一位
        if (i + 1 == n) {
            printNum(data);
            return;
        }
        //递归赋值给下一位0-9
        for (int j = 0; j < 10; j++) {
            data[i + 1] = j;
            printMethod(data, n, i + 1);
        }
    }

    //打印数字,先去掉前面的0,并注意去掉全为0的情况
    private static void printNum(int[] data) {
        int notZero = 0;
        boolean isEnd = false;
        for (int i = 0; i < data.length; i++) {
            if (data[i] != 0) {
                notZero = i;
                break;
            }
            if (i == data.length - 1) {
                isEnd = true;
            }
        }
        if (isEnd) {

        } else {
            for (int i = notZero; i < data.length; i++) {
                System.out.print(data[i]);
            }
            System.out.println();
        }
    }


}