Print Numbers by Recursion

    1. public class Solution {
    2. /**
    3. * @param n: An integer.
    4. * return : An array storing 1 to the largest number with n digits.
    5. */
    6. List<Integer> result = new ArrayList<Integer>();
    7. if (n <= 0) {
    8. return result;
    9. }
    10. helper(n, result);
    11. }
    12. private void helper(int n, List<Integer> ret) {
    13. if (n == 0) return;
    14. helper(n - 1, ret);
    15. // current base such as 10, 20, 30...
    16. // get List size before for loop
    17. int size = ret.size();
    18. for (int i = 1; i < 10; i++) {
    19. // add 10, 100, 1000...
    20. for (int j = 0; j < size; j++) {
    21. // add 11, 12, 13...
    22. ret.add(ret.get(j) + base * i);
    23. }
    24. }
    25. }
    26. }