1 pièce(s) jointe(s)
Récursivité - Problème de capacités?
Bonjour,
Je n'ai pas bcp d'expérience en implémentation de récursivité et j'ai du mal à interpréter les indications du déboggeur.
Voila la fonction récursive :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
double Pricer::Pricing_Blac_FD_DecreasingStep(vector<double> initials,int n,double l,double c){
if(n==0){return 0;}
else{
cout << n <<endl;
double rec=Pricing_Blac_FD_DecreasingStep(initials,n-1,l,c);
double epsilon=1/pow(n,-(0.25+c));
Market mar=VA.GetMarket();
vector<double> aux=initials;
aux[0]=aux[0]+epsilon;
Payoff_BLAC pay_up(l,mar,aux);
aux[0]=aux[0]-2*epsilon;
Payoff_BLAC pay_down(l,mar,aux);
DiffPayoff diff(pay_up,pay_down);
return rec + (compose(diff,VA)()-rec)/(double)n;
}
} |
Je programme s'excute normalement pour n <1081 mais pour n plus grand il y a un probleme à l'exécution:
Le déboggeur affiche :Pièce jointe 260281
Je pense que le problème est dû au limite de mon ordinateur, peut être limite sur la taille du call stack?
J'espère que quelqu'un pourra m'aider , merci d'avance!