gpt4 book ai didi

c++ - G++ 编译器不允许递归?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:36 26 4
gpt4 key购买 nike

我创建了一个使用递归的非常简单的程序。我正在使用 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--);
}
}

最佳答案

在递归调用中,您使用的是后缀 -- (numTimes--),而不是前缀版本 (--numTimes)。结果,numTimes 的值在递归调用后递减。这意味着 Recurse 被 10 无限调用。使用前缀版本(它将在调用之前递减),或者只传递 numTimes-1(因为不需要修改 numTimes 值)。

您看到段错误的原因是您的堆栈溢出到 protected 内存中。

关于c++ - G++ 编译器不允许递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/652683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com