您的位置:首页 > 其它

用递归打印数字

2016-06-28 20:02 183 查看

题目

用递归的方法找到从1到最大的N位整数。

解题

线性打印

public List<Integer> numbersByRecursion(int n) {
// write your code here
List<Integer> result = new ArrayList<Integer>();
int Max = (int)Math.pow(10,n);
for(int i=1;i< Max;i++)
result.add(i);
return result;

}


递归看下面程序理解

public class Solution {
/**
* @param n: An integer.
* return : An array storing 1 to the largest number with n digits.
*/
public List<Integer> numbersByRecursion(int n) {
// write your code here

List<Integer> result = new ArrayList<Integer>();
if(n<=0)
return result;
PrintN(n,result);
return result;

}
public int PrintN(int n,List<Integer> res){
if(n==0){
return 1;
}
int base = PrintN(n-1,res);
int size = res.size();
for(int i = 1;i<= 9;i++){
int subbase = base*i;
res.add(subbase);
for(int j= 0;j< size ;j++){
res.add(subbase+res.get(j));
}
}
return base*10;
}
}


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