打印从1到最大的n位数
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
分析:
当n过大时,会导致数组中的数字超出整型的取值范围,超出范围的数字无法正常存储,但是本道题目要求返回的是int[] ,所以是默认了数字都在整型的取值范围。
public int[] printNumbers(int n) {
int count = 0;
int tmp = 1;
for (int i=0;i<n;i++){
count = count + 9* tmp;
tmp = tmp * 10;
}
int[] a = new int[count];
for (int i=1;i<=count;i++){
a[i] = i;
}
return a;
}
如果是大数越界的情况,我们需要考虑的问题是:
- 使用的变量类型:一般int / long都有自己的取值范围,所以使用String类型
- 如何生成数字:int类型可以直接每轮 + 1,但是字符串不行,可以使用递归生成字符
- 最后可以使用递归生成所有的字符数组