美文网首页
面试题17:打印从1到最大的n位数

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

作者: scott_alpha | 来源:发表于2019-10-06 21:59 被阅读0次

题目:输入数字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<length; i++){
            if (isBegining0 && number[i] != '0'){
                isBegining0 = false;
            }
            if (!isBegining0){
                System.out.print(number[i]);
            }
        }
        System.out.println("\t");
    }
    public static void main(String[] args) {
        PrintToMaxOfNDigits(2);
    }
}

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/lshppctx.html