面试题 17. 打印从 1 到最大的 n 位数

题目描述

题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。

解答过程

样例

给出 n = 1, 返回[1,2,3,4,5,6,7,8,9].

给出 n = 2, 返回[1,2,3,4,5,6,7,8,9,10,11,...,99].

挑战

用递归完成,而非循环的方式。

Java 实现

public class Solution {
/**
* @param n: An integer
* @return: An array storing 1 to the largest number with n digits.
* 参考:https://blog.csdn.net/wutingyehe/article/details/51191520
*/
public List<Integer> numbersByRecursion(int n) {
// write your code here
if(n<=0){
return new ArrayList<Integer>();
}else if(n==1){
List<Integer> result = new ArrayList<Integer>();
for(int i=1;i<=9;i++){
result.add(i);
}
return result;
}else{
List<Integer> list = numbersByRecursion(n-1);
List<Integer> result = new ArrayList<Integer>(list);
for(int i=1;i<=9;i++){
int topdigit = (int)Math.pow(10, n-1)*i;
result.add(topdigit);
for(int j=1;j<=list.size();j++){
result.add(topdigit+j);
}
}
return result;
}
}
}

最新文章

  1. FFT
  2. JavaScript高级程序设计学习笔记--BOM
  3. ubuntu 15.04 联网提示:wifi已通过硬件开关禁用
  4. ${fn:length(worklicenseList)} #表示不在struts堆栈里,没有#表示从struts堆栈里取
  5. php 获取某个月的周次信息
  6. Qt学习经验之quit()、exit()、close()《转载》
  7. DataGirdView 设置单元格居中
  8. [图形学] Chp14 GLU曲面裁剪函数程序示例及样条表示遗留问题
  9. 我的&quot;Hello World!&quot;之旅
  10. spring cloud使用Feign做消费端时的eureka.client.registerWithEureka/eureka.client.fetchRegistry是否配置的问题
  11. bootstrap+Ajax+SSM(maven搭建)实现增删改查
  12. 在ASP.NET MVC中使用Knockout实践07,自定义验证信息的位置与内容
  13. 从头開始学 RecyclerView(三) 封装简化
  14. linux shell 脚本攻略学习1
  15. Netty源码分析之NioEventLoop(一)—NioEventLoop的创建
  16. Python初体验(一)—【配置环境变量】【变量】【input】【条件语句】【循环语句】
  17. 循环语句(循环for与while等)
  18. PlistBuddy简单使用
  19. 题解【CF277E Binary Tree on Plane】
  20. redis入门笔记

热门文章

  1. [solr]solr的安装
  2. AngularJs 中的CheckBox前后台交互
  3. Spring @Async的异常处理
  4. 问题BeanFactory not initialized or already closed - call &#39;refresh&#39; before access
  5. http学习 - 缓存
  6. lambda表达式的应用例子和JavaSE 8特性
  7. 【bzoj1593-预定旅馆】线段树维护连续区间
  8. PHP做分页查询(查询结果也显示为分页)
  9. quick 用系统浏览器打开url
  10. 如果你也想写个完整的 Vue 组件项目