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 :
Je programme s'excute normalement pour n <1081 mais pour n plus grand il y a un probleme à l'exécution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Le déboggeur affiche :
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!
Partager