LintCode 用递归打印数字
2017-03-22 13:01
288 查看
用递归的方法找到从1到最大的N位整数。
样例
给出
给出
挑战
用递归完成,而非循环的方式。
方法一:循环输出
最大的数为10^n -1
方法二:递归输出(会溢出)
这种方法,最大值为多少,就递归多少层。当数据比较大时,导致栈溢出
方法三: 递归输出(不溢出)
递归使得递归的深度最多为N。将1-10定为一层,10-100定为一层,那么输入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].
挑战
用递归完成,而非循环的方式。
方法一:循环输出
最大的数为10^n -1
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> ret; int max = 1; for(int i =1; i< n+1; i++){ max *= 10; } for(int j=1; j< max; j++){ ret.push_back(j); } return ret; } };
方法二:递归输出(会溢出)
这种方法,最大值为多少,就递归多少层。当数据比较大时,导致栈溢出
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 int max = 1; for(int i =1; i< n+1; i++){ max *= 10; } return print(max); } vector<int> print(int n){ vector<int> ret; int i =1; if(i <= n){ ret.push_back(i); print(i+1); } return ret; } };
方法三: 递归输出(不溢出)
递归使得递归的深度最多为N。将1-10定为一层,10-100定为一层,那么输入n,最多就循环n层。
class Solution { public: /** * @param n: An integer. * return : An array storing 1 to the largest number with n digits. */ vector<int> ret; //存放数据 vector<int> numbersByRecursion(int n) { // write your code here if( n<1 ){ return ret; } return print(1,n); //打印从1开始的n位数 } vector<int> print(int i, int n){ if( n>=1 ){ //依次将1-9,10-99,100-999放入容器内 int max = i*10; for(int j=i; j<max; j++){ ret.push_back(j); } print(max, n-1); } return ret; } };
相关文章推荐
- LintCode-剑指Offer-(371)用递归打印数字
- [LintCode]371.用递归打印数字
- LintCode-用递归打印数字
- Lintcode 用递归打印数字
- LintCode-371.用递归打印数字
- [LintCode] 用递归打印数字 Print Numbers by Recursion
- 用递归打印数字-LintCode
- LintCode 用递归打印数字
- lintcode(371)用递归打印数字
- 用递归打印数字
- 递归打印数字
- 0021利用递归算法打印数字金字塔
- 递归入门(十) ---- 打印数字(递归原理详解)
- Lintcode 用递归打印从1到N位的最大整数
- 递归回溯与迭代回溯算法框架,打印在n个数字中取k个数字的所有可能
- 递归连续数 打印出0~9的数字,请补充缺少的代码。
- 合法IP&窗口最大值数组&打印素数&递归逆序一个栈&栈排序另一个栈&MyString&寻找数组中出现的重复字符&数组中的重复数字&逆序打印链表&空格替换成%20
- 面试题目-用递归通过单字符输出打印多位的数字
- 用递归打印数字
- lintcode-用递归打印数字