如何在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)也能稳定工作。感谢解释基本原理和可能的