使用递归反转整数,而不在C++尾随 0
Using recursion to reverse an integer without trailing 0's in C++
我被困在如何省略尾随零,在递归调用中反转整数。如果你能引导我走上正确的道路,我将不胜感激。我被困住了,不知道该怎么做。我已经走到了这一步,但正在努力完成它。谢谢。
int main() {
int numToReverse;
cout << "Please enter in a number: " << endl;
cin >> numToReverse;
cout << reverseIntRecursion(numToReverse) << endl;
}
int reverseIntRecursion(int n) {
if (n < 10) //Base Case
return n;
else
cout << n % 10; // Prints out the last number
return reverseIntRecursion(n / 10); // General Case, Recursive Function
}
也许最简单的方法是将 int 解析为字符串(字符数组)并打印为数组?
下面是一些代码,只要为第二个参数输入 true,就可以正常工作:
int ReverseIntRecursion(int, bool);
int main(int argc, const char * argv[]) {
std::cout << ReverseIntRecursion(30400, true);
std::cout << std::endl;
return 0;
}
int ReverseIntRecursion(int N, bool FirstIter)
{
if (N < 10)
return N;
else if (N % 10 == 0 && FirstIter)
return ReverseIntRecursion(N/10, true);
else
std::cout << (N % 10);
return ReverseIntRecursion(N/10, false);
}
// prints 403
你的函数没有反转整数。它只是以相反的顺序打印数字。
这就是为什么你会遇到尾随零问题。如果你写了一个实际上反转整数的函数 - 你的问题就会消失。
例如:
// Helper function for reversing an integer.
int reverseIntRecursionBase(int n, int& base) {
if (n < 10) // trivial case. If n consists of a single digit - reversed n is equal to n.
{
return n;
}
int result = reverseIntRecursionBase (n/10, base); // recurse until you hit a trivial case.
/*
The leftmost digits in the original number should be the
rightmost digits in the reversed number.
This code will be first executed, after trivial case has been hit:
e.g. given number 1234, this line will be first reached when n = 12; result = 1.
*/
base *= 10;
result = (n % 10)*base + result;
return result;
}
int reverseIntRecursion(int n) {
int base = 1;
return reverseIntRecursionBase (n, base);
}
现场演示。
相关文章:
- c++ 11 带有 decltype 的尾随返回类型无法按预期工作
- C++中哪里实际需要尾随返回类型?
- 删除尾随零 - c++
- 模板参数包如何具有其他尾随参数?
- 截至 C++14 起尾随返回类型语法的合法使用
- 在 C++11 函数中使用尾随返回类型的优点
- 为什么无法在可变参数模板中将尾随模板参数指定为默认值?
- 为什么这个Pascal三角实现给了我尾随的零
- C++范围 - v3 概念::valid_expr 检查,带有尾随", 42"
- CMAKE:前导或尾随空格(策略CMP0004)
- 未推导尾随类模板参数
- 使用 std::cin 的输入仅适用于浮点数,仅当值尾随字母"e"(大写和小写)时
- decltype(auto) 是否使尾随返回类型过时?
- 必须使用尾随返回类型的示例,因为无法用旧方法解决问题
- 删除C++中的尾随逗号
- 尾随零的数量
- 为什么不按默认构造路径划分路径只是在 Visual Studio 中添加尾随分隔符?
- 查找数字中尾随零的数量
- 如何使用 C++ std 计算整数集合的前导零和尾随零
- 尝试使用具有尾随返回类型的 lambda 进行 SFINAE 时出现硬错误