【基本思路】
从高位到低位迭代打印
总共n位数,每一个位置上为0-9共10个数字,一次迭代打印该位置确定后,剩余位置上的数字
//PrintNum 函数设置:从第一个不为0的数字开始打印
import java.util.Scanner;
public class Print1ToMaxOfNBits {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int nBits=input.nextInt();
print1ToMaxOfNBits(nBits);
}
private static void print1ToMaxOfNBits(int nBits) {
// TODO Auto-generated method stub
if(nBits<=0) {
System.out.println("invalid bit number");
return;
}
char[] array=new char[nBits];
for (int i=0;i<10;i++){
array[0]=(char) (i+'0');
print1ToMaxOfNBitsRecurise(array,nBits,0);
}
}
private static void print1ToMaxOfNBitsRecurise(char[] array,int length,int index) {
// TODO Auto-generated method stub
if(index==array.length-1)
{
printNumber(array);
return;
}
for(int i=0;i<10;i++){
array[index+1]=(char) (i+'0');
print1ToMaxOfNBitsRecurise(array,length,index+1);
}
}
private static void printNumber(char[] array) {
// TODO Auto-generated method stub
boolean isbegining0=true;
int nlength=array.length;
for(int i=0;i<nlength;i++){
if(isbegining0&&array[i]!='0')
isbegining0=false;
if(!isbegining0)
System.out.print(array[i]);
}
System.out.print(" ");
}
}
测试结果:
通过性测试:输入2,3
失效性测试:输入-1,0等不合法的位数
输入: 1
输出: 1 2 3 4 5 6 7 8 9
输入: -1
输出: invalid bit number