打印1到最大的n位数

319 阅读2分钟
1:题目

输入一个数字n,按顺序打印出从1到最大的n位的十进制数。


例如:

输入数字3,则打印出从1,2,3,4,5一直到999


2:思考

第一种方式:

计算出n位数的最大十进制数,然后利用循环打印出来。但是这种方式有最大值的限制,默认最大数值为long类型,long类型的取值范围为-9223372036854775808到9223372036854775807,故没有考虑到会溢出的情况,比如给定的n=1000。


第二种方式:

用数组来表示大数。


3:解答

1):用字符串表示数字,最直观的方法就是字符串里每个字符都是‘0’到‘9’之间的某一个字符,用来表示数字中的一位。

2):我们把字符串中的每一个数字都初始化为‘0’,然后通过for循环打印出来。

3):在字符串表达的数字打印出来方法时,没有什么特别,直接利用for循环遍历输出字符数组,但是要从高位第一个不是0的开始输出。


以n=3为例, 嵌套3层循环



看下面的代码解释一下

1:百位数是print1ToMaxOfDigit调用print1ToMax时的for循环赋值的。

2: 十位数是因为index=1,number.length=3两个不相等后递归调用的print1ToMax循环赋值的

3: 个位数是因为index=2,number.length=3 两个不相等后递归调用print1ToMax赋值的,但是此时再去调用print1ToMax的时候, 由于index+1==number.length相等,执行了printNumber打印,最终三层循环打印出了1到999。


注:printNumber的主要作用是通过循环去掉char数组中前面的0。


4:代码


如果你觉得这篇文章有用,记得分享给其他的小伙伴,大家一起进步哦~~~



扫一扫 关注我的公众号

如果你想要跟大家分享你的文章,欢迎留言投稿~

如果你喜欢,请留下你的赞哦