首页 > 代码库 > 用递归的方式将数字的各个位数转换为字符串
用递归的方式将数字的各个位数转换为字符串
遇到一个问题,需求是将形如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 }
至此,这个问题就解决啦。
用递归的方式将数字的各个位数转换为字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。