用递归的方式将数字的各个位数转换为字符串

遇到一个问题,需求是将形如434的数字转换成 si san si这种形式。

一开始想的是用循环取余的方式,

 1 void ReadOut (int Sum) {
 2
 3     static char str[10][5] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
 4
 5     while (Sum > 0) {
 6         std::cout  << str[Sum%10] << ‘ ‘ ;
 7         Sum /= 10;
 8     }
 9
10     return ;
11 }

后来发现,这种方式是从低位开始往高位输出,正好输出反了,一开始想Fix这个问题,想着找个方法把字符串反向排序一下,但是觉得这样做不优雅。

不过最后发现我可以把ReadOut这个函数递归调用,也就是说ReadOut (1234),相当于ReadOut(ReadOut(123)4),代码如下:

 1 void ReadOut (int Sum) {
 2
 3     static char str[10][5] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
 4
 5
 6     if (Sum > 10) {
 7         ReadOut(Sum/10);
 8         std::cout << ‘ ‘ << str[Sum%10];
 9     } else {
10         std::cout << str[Sum%10];
11     }
12
13     return ;
14 }

至此,这个问题就解决啦。

时间: 2024-10-12 02:10:47

用递归的方式将数字的各个位数转换为字符串的相关文章

Java非递归的方式获取目录中所有文件(包括目录)

零.思路解析 对于给出的文件查看其下面的所有目录,将这个目录下的所有目录放入待遍历的目录集合中,每次取出该集合中的目录遍历,如果是目录再次放入该目录中进行遍历. 一.代码 /** * 非递归的方式获取目录中的所有文件<br> * 此方法获取的路径未按照目录->文件方式排列 * * @param dirPath 目录路径 * @return 指定目录下所有文件和目录的集合 */ public static List<File> listAllFile(String dirPat

黑马程序员——ava——采用递归的方式来获取相关目录下的子目录的名称

采用递归的方式来获取相关目录下的子目录的名称 import java.io.File; //采用递归的方式来获取D盘下myjava目录下的所有子目录的名称 public class FileListDemo { public static void main(String[] args) { // 获取D盘下所有的文件目录的名称 File file = new File("E:\\myjava"); //调用自定义方法来获取所有的文件夹目录 listAll(file,0); } pri

二叉树基本操作续二:前序、中序、后序遍历(非递归 迭代方式)

这里给出二叉树三种遍历方式的迭代实现代码.二叉树的递归实现使用系统栈入栈出栈,而非递归的迭代实现方法就是手动维护一个栈,来模拟递归的入栈出栈过程. 本文没有给出用户栈的代码,如果需要结合上篇的测试代码一起测试,则需要自己实现自己的栈,以及基本的pop.push等栈操作函数. 前序迭代遍历: 1 void iter_preorder(tree_pointer ptr) 2 { 3 //前序遍历:先遍历根节点,然后再分别遍历左右子树 4 int top = -1; 5 tree_pointer st

利用递归求两个数字的最大公约数。

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //利用递归求两个数字的最大公约数. //公因数,如果一个整数同时是几个整数的约数,则这个整数为它们的"公约数" function getNum(a, b) { va

二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式

二叉树的遍历方式: 1.深度优先:递归,非递归实现方式 1)先序遍历:先访问根节点,再依次访问左子树和右子树 2)中序遍历:先访问左子树,再访问根节点吗,最后访问右子树 3)后序遍历:先访问左子树,再访问右子树,最后访问根节点 2.广度优先     按照树的深度,一层一层的访问树的节点 1 package Solution; 2 3 import java.util.LinkedList; 4 import java.util.Queue; 5 import java.util.Stack; 6

WPF 组织机构下拉树多选,递归绑定方式现实

原文:WPF 组织机构下拉树多选,递归绑定方式现实 使用HierarchicalDataTemplate递归绑定现实 XAML代码: <UserControl x:Class="SunCreate.CombatPlatform.Client.MultiSelOrgTree" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas

按顺序获取异步数据,可以用递归的方式

异步函数不应该用直接循环,不然项目的执行顺序是不确定的. 应该用递归: var arr = ["a","b","c"]; (function loop(index) { setTimeout(function(){//用setTimeout模拟异步函数 console.log(arr[index]); if (++index按顺序获取异步数据,可以用递归的方式 原文地址:https://www.cnblogs.com/fanbulaile/p/1

c语言练习27——递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

#include<stdio.h> #include<stdlib.h> //题目:递归函数调用方式,将所输入的5个字符,以相反顺序打印出来. int main(){ int i,l; char a[100]; while(1){ printf("请输入一串字符:"); for(i=0;i<100;i++){ scanf("%c",&a[i]); if(a[i]=='\n') break;} l=i; printf("

递归 将一个十进制数转化为任意进制字符串

Create All kinds of guns. 设计重点: 1 基类作接口 2 继承类是各种不同的类 3 构建工厂类,然后根据需要创造不同的类,可以传入关键字,或者索引等. #pragma once #include <string> #include <iostream> using namespace std; //Base class class Gun { public: virtual string description() { return "Gener