按顺序打印从1到最大的n位十进制数
按照回溯法,树根是最高位,树叶是最低位。递归方式解决问题时,脑中要模拟好递归树。
public static void print(int n) {
if ( n <= 0) return;
char[] number = new char[n];
print1ToMax(number, 0);
}
//digit代表位数
public static void print1ToMax(char[] number, int digit) {
if (digit == number.length) { //地柜结束条件,到叶子节点
printNumber(number);
return;
}
for (int i = 0; i < 10; i++) {
number[digit] = (char) (i + '0');
print1ToMax(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();
}