用递归打印数字-LintCode
来源:互联网 发布:詹姆斯和科比知乎 编辑:程序博客网 时间:2024/06/05 15:25
用递归的方法找到从1到最大的N位整数。
提示:
用下面这种方式去递归其实很容易:
recursion(i) { 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].
挑战:
用递归完成,而非循环的方式。
#ifndef C371_H#define C371_H#include<iostream>#include<vector>#include<cmath>using namespace std;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> v; if (n <= 0) return v; if (n == 1) return vector<int>{1, 2, 3, 4, 5, 6, 7, 8, 9}; v = numbersByRecursion(n - 1); int len = v.size(); for (int i = 1; i < 10; ++i) { v.push_back(i* pow(10, n - 1)); for (int j = 0; j < len; ++j) v.push_back(i * pow(10, n - 1) + v[j]); } return v; }};#endif
阅读全文
0 0
- LintCode-用递归打印数字
- LintCode 用递归打印数字
- lintcode-用递归打印数字
- Lintcode 用递归打印数字
- LintCode 用递归打印数字
- 用递归打印数字-LintCode
- lintcode(371)用递归打印数字
- [LintCode]371.用递归打印数字
- LintCode-剑指Offer-(371)用递归打印数字
- [LintCode] 用递归打印数字 Print Numbers by Recursion
- 用递归打印数字
- 用递归打印数字
- 递归打印数字
- 【递归】数字打印
- 递归打印螺旋数字
- Lintcode 用递归打印从1到N位的最大整数
- 0021利用递归算法打印数字金字塔
- 蓝桥杯常用算法知识点:【递归】数字打印
- 编辑修改公众号资料-微信公众号使用教程6
- EditText属性大全详解
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
- struts2值的传递与接收总结
- BOM--window对象
- 用递归打印数字-LintCode
- redis-lua脚本
- Android 测试存储设备的读写速度
- MySQL数据库优化总结
- 学习理解CountDownLatch
- 网页弹框插件bootbox
- iOS 11 与 iPhone X的适配那些事
- AT+CNMI的使用
- h5常见问题