Avatar ·

如何在C++中实现递归?

大家好!我是C++新手,正在尝试理解递归。我写了一个简单的计算阶乘的函数,但它运行不正确。代码如下: ```cpp #include using namespace std; int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } } int main() { int num = 5; cout << "阶乘 " << num << " = " << factorial(num) << endl; return 0; } ``` 我期望对于数字5得到120,但有时程序崩溃或返回奇怪的值。我尝试添加对负数的检查,但没有帮助。我也读过关于stack overflow的内容,但不确定如何避免它。也许问题在于我没有正确使用base case?或者需要对返回类型做些什么?我想了解如何正确组织递归,使其对于大数字(例如20)也能稳定工作。感谢解释基本原理和可能的