【发布时间】:2017-09-20 18:47:44
【问题描述】:
我有一个任务,我想在输入数字(例如 90621)时打印特定代码。我想按顺序提取该数字并打印代码例如:提取数字 9 打印代码 --> 提取0(按顺序)。
问题是我只知道如何以相反的顺序提取数字(例如:先提取 1,然后为 90621 提取 2),我不知道如何按顺序提取。我在这里看到了一些帖子,人们将数字转换为字符串,但我不能这样做,因为我正在调用的函数之一需要一个 int 作为参数。到目前为止,我们还只介绍了循环和 if 函数等基础知识,所以我不确定如何使用堆栈或数组。
这是我到目前为止提取数字并打印代码的代码:
string barCode(int zip){
string result;
int n;
while (zip > 0){
n = zip % 10;
result += codeForDigit(n);
zip = zip / 10;
}
return result;
}
关于函数的一些信息:
- 函数 codeForDigit(int digit) 采用一位数字并返回该数字的代码。
- barCode(int zip) 它通过将数字分解为单个数字、对该数字进行编码并将其添加到字符串返回值来返回整个条形码。
【问题讨论】:
-
你了解过递归吗?迭代加上一个堆栈 == 递归。
-
我们已经学习了基本的递归,但我不熟悉如何将数字压入堆栈。
-
Here 是一个关于如何“倒退”的小例子。
-
基本上得到了相反的结果吧?为什么不手动反转呢?