double récursivité probabilité
Bonjour,
J'ai besoin d'écrire un petit programme de probabilité.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#include <stdio.h>
#define M 10
float pr(int j, int n)
{
float r = 0.0f;
if (j > n || j == 0)
{
r = 0;
}
else if (j == 1 && n == 1)
{
r = 1;
}
else
{
r = ((j/M) * pr(j, n - 1) + (1 - (j - 1)/M) * pr(j - 1, n - 1));
}
return r;
}
int main(void)
{
printf ("test : %f\n", pr(2, 3));
return 0;
} |
Sur papier, l'algorithme semble juste.
Quand j'exécute le programme, il retourne toujours 0. Il retourne en faite la valeur que je met dans la première condition comme si il "oubliait" de revenir au premier appel et faire l'addition une fois que tout les termes sont "trouvés".
Pouvez-vous m'aider ?
Merci d'avance !