C++ 递归不返回期望值

标签 c++ return

这是我的代码。我希望它返回 5,因为增量为 1。问题是如果 x >= 5,那么如何将值返回给主函数?函数中应该只有 1 个返回。

int addup(int x)
{
    if (x < 5)
    {
        std::cout<< x++;
        addup(x);
    }
    else return x;
}

int main()
{
    using namespace std;
    int x = 0;
    cout << "And x is:" << addup(x) << endl;

    cin.clear();
    cin.ignore(32767, '\n'); 
    cin.get(); 
    return 0;
}

最佳答案

递归调用中缺少返回

替换

addup(x);

通过

return addup(x);

如果该行中没有 return,该函数只会在最后消失,并且会出现未定义的行为。

好的编译器会警告您 if block 中缺少 return 语句。当使用 -Wall 编译时,我从 g++ 收到以下警告:

socc.cc: In function ‘int addup(int)’:
socc.cc:11:1: warning: control reaches end of non-void function [-Wreturn-type]
 }

关于C++ 递归不返回期望值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37096345/

相关文章:

python - 返回吃异常

java - 函数返回结果集,进入另一个类-JAVA

java - 当 HashMap 值第一次出现时,我怎么会出现 'break' 呢?

c++ - 如何让写时复制在 Linux 上的共享内存上工作

c++ - 如何在另一个输入语句中使用变量?

c++ - 有什么方法可以使用c++和wxwidget来实现类似于wpf扩展器的功能

c++ - Boost.lockfree 在 RHEL 5.3 上的性能

c++ - 如何在 C++ 中的矩阵中搜索 vector 以及使用哪种算法?

javascript - 返回函数和使用 function.innerFunction 有什么区别?

javascript - 从 JavaScript 回调返回未定义?