面试题17:打印从1到最大的n位数

题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999
思路:考虑大数问题,数字需要以字符串的方式打印,每个数字通过递归方法获得,打印的时候记得去除数字前面的0.
解决方案:

public class Question17 {
    public static void PrintToMaxOfNDigits(int n){
        if (n < 0) return;
        char[] number = new char[n];
        for (int i = 0; i < 10; i++){
            number[0] = (char)(i + '0');
            printToMaxOfNDigitsRecursively(number, n, 0);
        }
    }

    private static void printToMaxOfNDigitsRecursively(char[] number, int length, int index){
        if (index == length - 1) {
            printNumber(number);
            return;
        }
        for (int i=0; i<10; i++){
            number[index+1] = (char)(i + '0');
            printToMaxOfNDigitsRecursively(number, length, index + 1);
        }
    }
    private static void printNumber(char[] number){
        boolean isBegining0 = true;
        int length = number.length;
        for (int i=0; i

你可能感兴趣的:(面试题17:打印从1到最大的n位数)