題目描述
輸入數字 n,按順序打印出從 1 到最大的 n 位十進制數。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數即 999。
解題思路
由於 n 可能會非常大,因此不能直接用 int 表示數字,而是用 char 數組進行存儲。
使用回溯法得到所有的數。
代碼
public class Main {
public static void main(String[] args) {
printOneToMaxOfNDigits(3);
}
public static void printOneToMaxOfNDigits(int n) {
if (n <= 0){
return;
}
char[] number = new char[n];
printOneToMaxOfNDigits(number, 0);
}
public static void printOneToMaxOfNDigits(char[] number, int digit) {
if (digit == number.length) {
printNumber(number);
return;
}
for (int i = 0; i < 10; i++) {
number[digit] = (char) (i + '0');
printOneToMaxOfNDigits(number, digit + 1);
}
}
public static void printNumber(char[] number) {
int index = 0;
while (index < number.length && number[index] == '0'){
index++;
}
while (index < number.length){
System.out.print(number[index++]);
}
System.out.println();
}
}