Salut,
voila le code produit par VC++ en optim pour ton code!
Code:
1 2 3 4 5 6 7 8 9 10
| int somme(int n, int acc) {
// if(n==0)
00401000 test ecx,ecx
00401002 je somme+6 (401006h)
00401004 add eax,ecx
// return acc;
// else
// return somme(n-1, acc+1);
}
00401006 ret |
comme on peut le voir il y a un petit probleme c'est que visual a compris ce que tu voulais faire et il calcule direct n+acc.
je voulais montrer un truc mais c'est rate ^^
mais je voulais dire que les compilos C/C++ connaissent la tail call optimisation. Faut pas les prendre pour des cons, d'ailleurs je viens de prendre le compilo Visual C++ pour un con et il m'a condense un appel recursif en 3 lignes ASM, le bougre m'a bien demasqué