【发布时间】:2010-04-29 17:34:08
【问题描述】:
为什么我的递归函数会出现分段错误。每次我调用它时都会发生这种情况,当一个大于 4 的值作为参数时
#include <iostream>
#include <limits>
using namespace std;
int printSeries(int n){
if(n==1){
return 1;
}
else if( n==2){
return 2;
}
else if( n==3){
return 3;
}
else if( n==4){
return printSeries(1) + printSeries(2) + printSeries(3);
}
else{
return printSeries(n-3) + printSeries((n-2) + printSeries(n-1));
}
}
int main(){
//double infinity = numeric_limits<double>::max();
for(int i=1; i<=10; i++){
cout << printSeries(i) << endl;
}
return 0;
}
这工作正常,但我不确定返回正确的结果:
return printSeries(n-3) + printSeries(n-2) + printSeries(n-1);
【问题讨论】:
-
我将第一个基本情况更改为
-
在
printSeries()函数的顶部添加std::cout << n << ',';。
标签: c++ recursion segmentation-fault