例如:输入2,打印1到99内所有数
需要考虑大数问题,采用数组来表示,发现数字各位都是有0~9组成,需要打印所有的组合,注意打印时候,0在前面的不打印,如019,02等。(已测)
public static void printOneToMaxNumber(int n){
if(n<=0){
return;
}
char[] number=new char[n+1];
number[n]='\0'; //空格作用 分开两个数
for(int i=0;i<10;i++){
number[0]=(char) (i+'0');
printNumberRecursion(number, n, 0);
}
}
//递归
public static void printNumberRecursion(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');
printNumberRecursion(number, length, index+1);
}
}
//判断前面是否有0,有0 不打印 如09;
public static void printNumber(char[] number){
boolean isBegin0=true;
int length=number.length;
for(int i=0;i<length;i++){
if(isBegin0&&number[i]!='0'){//不打印第一位是0的数字
isBegin0=false;
}
if(!isBegin0){
System.out.print(number[i]);
}
}
}