用递归的方法找到从1到最大的N位整数。
你能够用深度最多只有 N 层的递归么?
样例
给出 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].
Print numbers from 1 to the largest number with N digits by recursion.
Can you recursive with at most N depth?
Example
Given N = 1, return [1,2,3,4,5,6,7,8,9].
Given N = 2, return [1,2,3,4,5,6,7,8,9,10,11,12,…,99].
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) {
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 = 0; j < list.size(); j++) {
result.add(topdigit + list.get(j));
}
}
return result;
}
}
}