12 打印1到最大的n位数

输入数字 n,按顺序打印出从 1 最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的
3 位数即 999。
由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储。

使用回溯法得到所有的数。

 

Java:

 1 public void printToMaxOfNDigits(int n) {
 2     if (n < 0) return;
 3     char[] number = new char[n];
 4     printToMaxOfNDigits(number, -1);
 5 }
 6 
 7 private void printToMaxOfNDigits(char[] number, int digit) {
 8     if (digit == number.length - 1) {
 9         printNumber(number);
10         return;
11     }
12     for (int i = 0; i < 10; i++) {
13         number[digit + 1] = (char) (i + '0');
14         printToMaxOfNDigits(number, digit + 1);
15     }
16 }
17 
18 private void printNumber(char[] number) {
19     int index = 0;
20     //去掉前导0
21     while (index < number.length && number[index] == '0') index++;
22     while (index < number.length) System.out.print(number[index++]);
23     System.out.println();
24 }

 

posted @ 2018-04-23 10:23  __Meng  阅读(120)  评论(0编辑  收藏  举报