打印从1到最大的n位数
题目
输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999
思路
首先考虑n的范围,当输入n很大的时候,我们求最大的N位数用int或者long都会溢出。最常用也是最容易的方法是用字符串或者数组表达大数。我们用字符串来解决大数问题。
代码
public void Print1ToMaxOfDigits(int n){
if(n<=0)
return;
char[] number = new char[n+1];
number[n]='\0';
for(int i=0; i<10; ++i)
{
number[0]=i+'0';
Print1ToMaxOfNDigitsRecursively(number,n,0);
}
}
public void Print1ToMaxOfNDigitsRecursively(char[] number, int length, int index)
{
if (index==length-1)
{
PrintNumber(number);
return;
}
for(int i=0;i<10;i++)
{
number[index+1]=i+'0';
print1ToMaxOfNDigitsRecursively(number,length,index+1);
}
}
public void PrintNumber(char[] number){
boolean isBeginning0 = true;
int nLength = number.length;
for(int i=0; i<nLength; i++){
if(isBeginning0&&number[i]!='\0')
isBeginning0 = false;
if(!isBeginning0)
{
System.out.print(number[i]);
}
}
}