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

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


}

猜你喜欢

转载自blog.csdn.net/taotao12312/article/details/77801257