c++ - 简单的递归 C++ 代码不断崩溃

标签 c++ recursion iostream

所以我正在自学 C++,并且我正在努力理解为什么这段代码总是崩溃。我发现这一行:string str = to_string(n) 可能不正确。但是我没有看到它崩溃的其他错误。

#include <iostream>
#include <string>

using namespace std;

void write_vertically(int n)
{
    string str = to_string(n);

    if (str.length()>=0) 
    {
        cout<<stoi(str.substr(0,1))<<endl;
        write_vertically(stoi(str.substr(1,str.length())));
    }

}

int main( ) 
{
    write_vertically(1234567890);
    return 0;
}

最佳答案

你遇到了 Stack Overflow!而您在完美的网站上找到了解决方案。

在行 string str = to_string(n); 无论 n 的值如何,to_string 都将返回一个非空字符串,可以是“0”、“6”或“1653”等等。

递归的结束条件是如果 (str.length() >= 0) 为假。 然而,如上所述,这绝不是错误的。

您希望递归的结束条件是什么?也许我们可以帮助您。

编辑:事实证明,代码应该在进入堆栈溢出之前崩溃,因为它最终会用一个空字符串调用 stoi,这使得它抛出一个 std::无效参数。但是,仍然存在无限递归问题,所以我会继续回答。

关于c++ - 简单的递归 C++ 代码不断崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433985/

相关文章:

c# - 在一个 Stream 类中拼接多个流

c++ - 如何在 box2d 中进行碰撞连接

c++ - 存储值 Turbo C++

python - CPI 的递归函数

c++ - 在不关闭流的情况下写入 Wave header 和添加数据

c++ - 为什么某些 C++ 标准库 `operator<<` 函数将其流宽度重置为 0?

c++ - 对 boost::gregorian::greg_month::as_short_string() const 的 undefined reference

c++ - 错误 C2784,键映射中的类

algorithm - 寻找整数中的最小数

python - 子集总和 : Why is DFS + pruning faster than 2 for loop?