剑指Offer(书):打印从1到最大的n位数
题目:输入数字N,按顺序打印出从1到最大的N位十进制数,比如输入3,则打印出1、2、3一直到999
分析:N的范围不定。所以有可能超出范围,因此用数组存放以及输出。说实话,对复杂递归还是一头雾水
public void printToMaxOfNDigits(int n){ if(n<=0){ return; } int[] number = new int[n]; for(int i=0;i<10;i++){ number[0]=i; printToMaxOfNDigitsRecursively(number,n,0); } } private void printToMaxOfNDigitsRecursively(int[] number, int n, int index) { if(index==n-1){ printNumber(number); return; } for(int i=0;i<10;i++){ number[index+1]=i; printToMaxOfNDigitsRecursively(number,n,index+1); } } private void printNumber(int[] number) { boolean isStart0 = true; for(int i=0;i<number.length;i++){ if(isStart0 && number[i]!=0){ isStart0=false; } if(!isStart0){ System.out.print(number[i]); } } System.out.printf("\n"); }