您的位置:首页 > Web前端

剑指offer 12. 打印1到最大的n位数

2017-05-15 14:57 459 查看
// 题目:输入一个数n,打印1到最大的n位数中所有的数
// 解法:设立char型模拟数组,采用递归的方式,排列出所有的数,当index排列到最后一个数后就进行打印
public class Main {

public static void main(String[] args) {
printNum(2);
}

public static void printNum(int n) {
if(n<=0){
return;
}
char[] num = new char
;
for(int i = 0;i<n;i++){											//建立并初始化
num[i] = '0';
}
for(int i = 0;i<=9;i++){										//设置第一位的值并递归
num[0] = (char)(i+'0');
printNumHelper(num,n,0);
}
}

public static void printNumHelper(char[] num, int length, int index){
if(index == length-1){											//当index排列到最后一个数后就进行打印
printNumber(num);
return;
}else{
for(int i = 0;i<=9;i++){									//递归的为每一位数排列0-9
num[index+1] = (char)(i+'0');
printNumHelper(num,length,index+1);
}
}
}

public static void printNumber(char[] num){							//进行打印
boolean isZero = true;
for(int i = 0;i<num.length;i++){
if(isZero == false){
System.out.print(num[i]);
continue;
}
if(num[i] != '0'){
isZero = false;
System.out.print(num[i]);
}
}
if(isZero == false){											//如果打印了数就附加一个换行
System.out.println();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: