zoukankan      html  css  js  c++  java
  • Print Numbers by Recursion

    Print numbers from 1 to the largest number with N digits by recursion.

     Notice

    It's pretty easy to do recursion like:

    recursion(i) {
        if i > largest number:
            return
        results.add(i)
        recursion(i + 1)
    }
    

    however this cost a lot of recursion memory as the recursion depth maybe very large. Can you do it in another way to 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].

    Runtime: 179ms.

     1 class Solution {
     2 public:
     3     /**
     4      * @param n: An integer.
     5      * return : An array storing 1 to the largest number with n digits.
     6      */
     7     vector<int> numbersByRecursion(int n) {
     8         // write your code here
     9         vector<int> result;
    10         if (n <= 0) return result;
    11         
    12         printNumbers(result, 0, n);
    13         return result;
    14     }
    15     
    16 private:
    17     void printNumbers(vector<int>& result, int depth, int n) {
    18         if (depth >= n) return;
    19         
    20         int copyNumber = result.size();
    21         for (int i = 1; i <= 9; i++) {
    22             int base = i * pow(10, depth);
    23             result.push_back(base);
    24             for(int j = 0; j < copyNumber; j++) {
    25                 result.push_back(base + result[j]);
    26             }
    27         }
    28         printNumbers(result, depth + 1, n);
    29     }
    30 };
  • 相关阅读:
    yii2.0 干货
    VLD opcodes 在线查看
    定长顺序串的实现
    循环队列
    oracle--DG初始化参数
    oracle --工具 ODU
    Oracle RAC 修改SPFILE路径 文件查看
    oracle 错误 ORA-00020问题解析
    oracle 错误 TNS-01190与oracle 登入没反应操作
    Oracle--RMAN Recover 缺失的归档操作
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5782537.html
Copyright © 2011-2022 走看看