我创建了一个使用递归的非常简单的程序.我正在使用g ++编译器.我可以编译它,但是当我尝试运行它时,我收到一条错误消息,上面写着SEGMENTATION FAULT.这是我的代码:
#include <iostream.h>
using namespace std;
int Recurse(int);
int main(int argc, char *argv[])
{
Recurse(10);
cout << endl;
}
int Recurse(int numTimes)
{
if (numTimes == 0)
return 0;
else
{
cout << numTimes << " ";
Recurse(numTimes--);
}
}
Run Code Online (Sandbox Code Playgroud)
Jes*_*sak 33
在递归调用中,您使用的是postfix --(numTimes--),而不是前缀version(--numTimes).结果,numTimes在递归调用之后递减值.这意味着无限地调用Recurse.使用前缀版本(将在调用之前递减它),或者只是传递numTimes-1(因为numTimes值不需要修改).
您看到段错误的原因是您的堆栈溢出到受保护的内存中.
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |