打印1到最大的n位数 java 数组实现
程序员文章站
2024-03-15 22:09:00
...
打印1到最大的n位数 java数组实现
题目:输入数字n,按顺序打印出从1到最大的n位十进制数字;
例子:输入n=3时,则打印出1、2、3 … 998、999;
误区:此题目没有给出n的范围,因此不能用int或者long long保存最大数字,然后循环输出;
思路:使用字符串或者数组实现,java代码实现如下:
class Number {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
printNumber(n);
}
public static void printNumber(int n) {
if(n <= 0)
return;
int[] arr = new int[n+1]; //数组表示数字
while(true){ //每次循环,数组表示的数字自增并打印当前结果
count(arr, 0);
if(arr[n] == 1) //当达到最大值+1时,退出循环
break;
print(arr);
}
}
public static void count(int[] arr, int n){ //数组表示数据自增
if(arr[n] < 9)
arr[n]++;
else{ //发生进位时,n+1位置自增
arr[n] = 0;
count(arr, n+1);
}
}
public static void print(int[] arr){ //输出数组中当前结果
for(int i = arr.length-1; i>=0; i--){
if(arr[i] != 0)
System.out.print(arr[i]);
}
System.out.print(" ");
}
}
部分运行截图:
上一篇: 剑指Offer:打印从1到最大的n位数(Python语言实现)
下一篇: 打印1到最大的n位数