#include <iostream>
using namespace std;
int recur(int x) {
1 and recur(--x);
cout << x;
return x;
}
int main() {
recur(10);
return 0;
}
答案 0 :(得分:5)
这是一次无限递归。因此,当堆栈空间不足时,它会出现故障。
答案 1 :(得分:4)
1 and recur(--x);
相当于
recur(--x);
显然,您正在进行无限递归调用,导致堆栈溢出,然后是分段错误。
我猜你的意思
x and recur(--x);
仅在x为非零时才进行递归调用。
答案 2 :(得分:2)
它没有递归的终止条件,因此会递归直到你的堆栈空间不足。
答案 3 :(得分:2)
recur
是一个无限循环;你需要在那里放置一个基本条件,以便它不再自行调用
例如。 (在函数的顶部)if (x <= 0) return 0;
另外,1 and
有什么意义?这是一个无操作......也许你的意思是x and
,如果你只是用x
来调用0
,那么它会停止递归recur
负值仍然会导致无限循环。)