打印从1到n位最大的数
public static void printN(int n) {
if (n <= 0)
return;
char[] number = new char[n];
for (int i = 0; i < n; i++) {
number[i] = '0';
}
while (!increment(number)) {
printNumbers(number);
}
}
//char数组模拟整型自增
private static boolean increment(char[] number) {
boolean isOverFlow = false;
int flag = 0;//进位标志
int length = number.length;
for (int i = length - 1; i >= 0; i--) {
int cur = number[i] - '0' + flag;
if (i == length - 1)
cur++;
if (cur >= 10) {
if (i == 0) {
isOverFlow = true;
} else {
flag = 1;
cur -= 10;
number[i] = (char) ('0' + cur);
}
} else {
number[i] = (char) ('0' + cur);
break;
}
}
return isOverFlow;
}
//打印
private static void printNumbers(char[] number) {
boolean isBegin = false;
for (int i = 0; i < number.length; i++) {
if (number[i] != '0') {
isBegin = true;
}
if(isBegin) {
System.out.print(number[i]);
}
}
System.out.println();
}