题目:
思路:要求使用递归且递归的深度最多只有N层,则要想到可对第n层使用循环来把该层的数字加入到list中,代码如下:
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
ArrayList<Integer> arr=new ArrayList<>();
addNum(n,0,arr);
return arr;
}
private void addNum(int n,int ans,ArrayList<Integer> arr){
if(n==0){
if(ans>0){
arr.add(ans);
}
return;
}
for(int i=0;i<=9;i++){
addNum(n-1,ans*10+i,arr);
}
}
}