【剑指offer 面试题12】打印1到最大的n位数
2015-06-19 21:52
483 查看
思路:
用n位字符数组表示n位数,通过递归的方式逐层(位)遍历,递归终止时打印。
用n位字符数组表示n位数,通过递归的方式逐层(位)遍历,递归终止时打印。
#include "stdio.h" #include "string.h" //打印“数字” void printNum(char* number) { //设置前导零状态为开启 bool ishead0 = true; for(int i = 0; i < strlen(number); i++) { //遇到第一个非零数,关闭前导零状态 if(number[i] != '0' && ishead0 == true) ishead0 = false; //前导零状态关闭下,方可打印数字 if(!ishead0) printf("%c", number[i]); } printf("\n"); } void print1toNrec(char* number, int len, int index) { //递归终止,打印 if(index == len) { printNum(number); return ; } //递归执行 for(int i = 0; i < 10; i++) { number[index] = '0' + i; print1toNrec(number, len, index + 1); } } void print1toN(int n) { if(n <= 0) return ; //定义并初始化number数组 char* number = new char[n + 1]; memset(number, '0', n); number = '\0'; //从number[0]处递归调用 for(int i = 0; i < 10; i++) { number[0] = '0' + i; print1toNrec(number, n, 1); } } int main() { print1toN(3); }
相关文章推荐
- 《人,绩效和职业道德》及博客的读后感
- Java程序员的Golang入门指南(上)
- Java程序员的Golang入门指南(上)
- 剑指offer--面试题22:栈的压入、弹出序列--Java实现
- 【剑指offer】面试题15、链表中倒数第 K 个结点
- 【剑指offer】面试题14、调整数组顺序使奇数位于偶数前面
- 黑马程序员——Collections、Arrays、其他对象
- 黑马程序员——JAVA笔记——反射
- 黑马程序员--静态代理和动态代理
- 黑马程序员--java学习笔记第五天
- 剑指offer--面试题21:包含min函数的栈--Java实现
- 黑马程序员--java基础:字符IO流
- 剑指offer--面试题20:顺时针打印矩阵--Java实现
- 黑马程序员--JAVA学习笔记第四天
- 美女程序员是如何将QQ转换成题目中那串数字的--读博文《找女神要QQ号码》
- 人,绩效与职业道德读后感
- 【转】程序员"青春饭"问题之我见
- 黑马程序员--字符串
- 黑马程序员——Java基础——Collection集合的总结
- ios 实用求职面试题