递归打印数字
来源:互联网 发布:网络二手车平台靠谱吗 编辑:程序博客网 时间:2024/05/21 21:59
看到一道题,对于一个正整数,按顺序每次打印一位。
如果用递归做,就要看问题能不能分解为同构的子问题:
比如1234,要先打印123,再打印4;接着先打印12,再打印3;先打印1,再打印2.之后剩下12,就把2打印出来,以此类推。
所以可以这样:
#include <iostream>void PrintOut(unsigned int num){if (num >= 10){PrintOut(num / 10);}printf("%2d ", num % 10);} int main(){PrintOut(12345);}其实用栈也可以做成迭代形式的:
#include <iostream>#include <stack>void PrintOut(unsigned int num){std::stack<int> storge;int temp = num;while (temp >= 10){storge.push(temp % 10);temp /= 10;}storge.push(temp);while (!storge.empty()){printf("%d", storge.top());storge.pop();}} int main(){PrintOut(12345);}
但是就没有递归那么优雅了。
所以俗语有云:用迭代者是人,用递归者是神!
另外还有一个优化的点,mod运算消耗太大。可以用宏 #define MyMod(N) (N)-ceil(N/10)*10 替代。
但是mod运算为毛消耗大,我布吉岛。
0 0
- 递归打印数字
- 用递归打印数字
- 用递归打印数字
- 【递归】数字打印
- 递归打印螺旋数字
- LintCode-用递归打印数字
- LintCode 用递归打印数字
- lintcode-用递归打印数字
- Lintcode 用递归打印数字
- LintCode 用递归打印数字
- 用递归打印数字-LintCode
- 0021利用递归算法打印数字金字塔
- 蓝桥杯常用算法知识点:【递归】数字打印
- lintcode(371)用递归打印数字
- [LintCode]371.用递归打印数字
- 递归入门(十) ---- 打印数字(递归原理详解)
- 打印有重复数字的数列的 一个递归解法
- Python 使用递归打印输出数字 (逆序和顺序)
- 编译rtt的命令
- linux内核启动过程中Warning: unable to open an initial console
- FTP服务器配置
- Note of learning Inside the Java Virtual Machine Chapter Five
- rtt中加入RTGUI
- 递归打印数字
- 关于产品的一些思考——网易之有道云笔记
- 小强的HTML5移动开发之路(10)——在线画板
- “加盐”的意思
- 简单工厂模式----控制台计算器的设计(C++实现)
- GSM协议栈概念、设计及实现相关概念
- Gas Station
- 深刻理解JavaScript基于原型的面向对象
- UVa:11584 Partitioning by Palindromes