题目:输入数字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);
}
}
网友评论