用递归打印数字

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

注意事项

用下面这种方式去递归其实很容易:

    if i > largest number:
return
results.add(i)
recursion(i + 1)
}```
但是这种方式会耗费很多的递归空间,导致堆栈溢出。你能够用其他的方式来递归使得递归的深度最多只有 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]. #### 挑战
用递归完成,而非循环的方式。 #### 标签
递归

code

class Solution {
public:
/**
* @param n: An integer.
* return : An array storing 1 to the largest number with n digits.
*/
vector<int> numbersByRecursion(int n) {
// write your code here
vector<int> result;
if(n <= 0)
return result; int *iNum = new int[n];
for(int i=0; i<n; i++) {
iNum[i] = 0;
} while(increatment(iNum, n)) {
result.push_back(toInt(iNum, n));
}
delete []iNum;
return result;
} int increatment(int iNum[], int length) {
int mark=0,i; for(i=length-1; i>=0; i--) {
if(++iNum[i] == 10) {
iNum[i] = 0;
}
else
break;
} for(i=0; i<length; i++) {
mark = mark || iNum[i];
} if(mark == 0)
return 0;
else
return 1;
} int toInt(const int iNum[], int length) {
int mark=0;
int result=0;
for(int i=0; i<length; i++) {
result = result * 10 + iNum[i];
}
return result;
}
};

LintCode-371.用递归打印数字的更多相关文章

  1. lintcode:递归打印数字

    题目 用递归打印数字 用递归的方法找到从1到最大的N位整数. 样例 给出 N = 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N = 2, 返回[1,2,3,4,5,6,7,8,9,10 ...

  2. 【递归】数字三角形 简单dp

    [递归]数字三角形 题目描述 对于大多数人来说,“我们是这么的正常,因此也就这么的平庸.”而天才总是与众不同的,所以当邪狼问修罗王:“老大,你蹲在那儿一动不动看了有半个小时了,蚂蚁有那么好看吗?” 修 ...

  3. 递归打印lua中的table

    在lua中,table是比较常用的数据形式,有时候为了打印出里面的内容,需要做一些特殊处理. 废话不多讲,直接粘代码: print = release_print -- 递归打印table local ...

  4. 面试 15:顺时针从外往里打印数字(剑指 Offer 第 20 题)

    面试 15:顺时针从外往里打印数字 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印每一个数字.例如输入: {{1,2,3}, {4,5,6}, {7,8,9}} 则依次打印数字为 1.2.3. ...

  5. UVA1626 - Brackets sequence(区间DP--括号匹配+递归打印)

    题目描写叙述: 定义合法的括号序列例如以下: 1 空序列是一个合法的序列 2 假设S是合法的序列.则(S)和[S]也是合法的序列 3 假设A和B是合法的序列.则AB也是合法的序列 比如:以下的都是合法 ...

  6. 使用递归打印二叉树的左视图 java

    使用递归打印二叉树的左视图 java package com.li.jinRiTouTiao; public class PrintLeftView { static class TreeNode{ ...

  7. DP(递归打印路径) UVA 662 Fast Food

    题目传送门 题意:n个饭店在一条直线上,给了它们的坐标,现在要建造m个停车场,饭店没有停车场的要到最近的停车场,问所有饭店到停车场的最短距离 分析:易得区间(i, j)的最短距离和一定是建在(i + ...

  8. Shell脚本递归打印指定文件夹中全部文件夹文件

    #!/bin/bash #递归打印当前文件夹下的全部文件夹文件. PRINTF() { ls $1 | while read line #一次读取每一行放到line变量中 do [ -d $1/$li ...

  9. Java n个线程轮流打印数字的问题

    一. 实现两个线程.轮流打印出数字.例如以下: bThread --> 10 aThread --> 9 bThread --> 8 aThread --> 7 bThread ...

随机推荐

  1. windows service 2012:搭建FTP服务器

    最近公司将服务器从线上移植到线下每次上传项目都要进入服务器感觉好麻烦, 所以就想搭建一个FTP的站点来管理项目,弄这个之前首先要关闭我们的windows service 2012 服务器的防火墙,只有 ...

  2. [Doctrine Migrations] 数据库迁移组件的深入解析一:安装与使用

    场景分析 团队开发中,每个开发人员对于数据库都修改都必须手动记录,上线时需要人工整理,运维成本极高.而且在多个开发者之间数据结构同步也是很大的问题.Doctrine Migrations组件把数据库变 ...

  3. 第七篇:gcc和arm-linux-gcc常用选项

    目录 一.gcc和arm-linux-gcc的常用选项 二.从.c文件到可执行文件过程 一.gcc和arm-linux-gcc的常用选项 常用选型 -v 查看gcc编译器的版本,显示gcc执行时的详细 ...

  4. POJ-3436:ACM Computer Factory (Dinic最大流)

    题目链接:http://poj.org/problem?id=3436 解题心得: 题目真的是超级复杂,但解出来就是一个网络流,建图稍显复杂.其实提炼出来就是一个工厂n个加工机器,每个机器有一个效率w ...

  5. 北京Uber优步司机奖励政策(4月6日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. day 5 飞机发射子弹 难点??

    1.效果图 2.飞机发出子弹 #-*- coding:utf-8 -*- import pygame import time from pygame.locals import * class Her ...

  7. CF813D Two Melodies(dp)

    题面 luogu Codeforces 题目大意: 给一个长度为\(n\)的序列,求两个不相交的子集长度之和最大是多少,能放入同一子集的条件是首先顺序不能变,然后每一个相邻的要么相差\(1\)或者相差 ...

  8. android学习五 Intent

    1.Intent是组件间调用的桥梁. 2.Android系统定义了很多Intent    http://developer.android.com/guide/components/intents-c ...

  9. Unity - Humanoid设置Bip骨骼导入报错

    报错如下: 解决: 原因是biped骨骼必须按照Unity humanoid的要求设置,在max中设置如下:

  10. 【system.date】使用说明

    对象:system.date 说明:提供一系列针对日期类型的操作 目录: 方法 返回 说明  system.date.isDate( date_string )  [True | False]  判断 ...