Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在C+;中运行代码后的递归错误消息+;17_C++_Recursion - Fatal编程技术网

C++ C++;在C+;中运行代码后的递归错误消息+;17

C++ C++;在C+;中运行代码后的递归错误消息+;17,c++,recursion,C++,Recursion,为什么如果我在运行完这段代码后继续运行,就会出现错误,并且在Windows7中会弹出错误消息 main.cpp #include <iostream> void g(int n) { if(n == 1) { std::cout << " V0id " << std::endl; return; } g(n - 1); std::cout << n << " -

为什么如果我在运行完这段代码后继续运行,就会出现错误,并且在Windows7中会弹出错误消息

main.cpp


#include <iostream>

void g(int n) {
     if(n == 1) {
        std::cout << " V0id " << std::endl;
        return;
     }
     g(n - 1);
     std::cout << n << " - 1 " << std::endl; 
     g(n - 2);
     std::cout << n << " - 2 " << std::endl;
}

int main(void) {
    g(10);

    return 0;
}

#包括
空g(整数n){
如果(n==1){
标准::cout
windows 7错误消息刚刚弹出

这是因为您的代码在无限循环中运行,而应用程序由于“堆栈溢出”而崩溃

如果(n==1)

如果执行进入时不匹配

g(n-2)

结果是传递给函数的是一个负数,执行以无限循环进行。 要测试这一点,请添加

cout << "Top" << n << endl;

你确定你的递归停止了吗?如果你写的代码没有编译,就加上检查
n==0
。你不能
返回0;
在声明为不返回任何值的函数中。如果你试着用2而不是10作为起始值来调试你的程序,你应该能够很容易地找到问题,因为只有几个步骤是n在问题发生之前执行eed。而且由于您编写了输出,因此更容易。@我认为这个条件没有帮助。因为传递的值变为负数,执行进入无限循环。最好将n添加到<0
void g(int n) {
    cout << "Top" << n << endl;
    if (n < 1) {
        std::cout << " V0id " << std::endl;
        return;
    }
    g(n - 1);
    std::cout << n << " - 1 " << std::endl;
    g(n - 2);
    std::cout << n << " - 2 " << std::endl;
}