Pourquoi j'obtiens une erreur de segmentation dans ma fonction récursive. Il arrive chaque fois que je l'appelle quand une valeur supérieure à 4 en tant que paramètreErreur de segmentation C++ dans la fonction récursive
#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;
}
Cela fonctionne très bien, mais je ne suis pas sûr que renvoie le résultat correct:
return printSeries(n-3) + printSeries(n-2) + printSeries(n-1);
Je remplace le premier cas de base par <= 1 mais je reçois toujours la segfault – user69514
Ajoutez 'std :: cout << n << ',';' en haut de votre fonction 'printSeries()'. – sbi