SHOW:
|
|
- or go back to the newest paste.
| 1 | <?php | |
| 2 | - | //On met en place la fonction permettant de calculer la factorielle d'un nombre |
| 2 | + | // On met en place la fonction permettant de calculer la factorielle d'un nombre |
| 3 | - | function factorielle($nb){
|
| 3 | + | function factorielle($nb) {
|
| 4 | // On teste que c'est bien un entier positif | |
| 5 | - | //On test que c'est bien un entier positif |
| 5 | + | if($nb >= 0 && is_int($nb)) {
|
| 6 | - | if($nb >= 0 && is_int($nb)) {
|
| 6 | + | // On affecte 1 aux variables pour être sûr qu'elles ne contiennent pas des "cochonneries" |
| 7 | $total = 1; | |
| 8 | - | //On affecte 1 aux variables pour être sûr qu'elles ne contiennent pas des "cochonneries" |
| 8 | + | |
| 9 | - | $total = 1; |
| 9 | + | // Traduction : Tant que $i est inférieur ou égal à $nb, on reste dans la boucle |
| 10 | - | $i = 1; |
| 10 | + | for ($i = 2; $i <= $nb; $i++) {
|
| 11 | // Comme la factorielle, c'est pour 5 par exemple 5*4*3*2*1, on va multiplier tous les chiffres de 2 à $nb (inutile de multiplier $nb par 1), $nb compris | |
| 12 | - | //Traduction : Tant que $i est inférieur ou égal à $nb, on reste dans la boucle |
| 12 | + | $total = $total * $i; |
| 13 | - | while ($i <= $nb) {
|
| 13 | + | } |
| 14 | - | //Comme la factorielle, c'est pour 5 par exemple 5*4*3*2*1, on va multiplier tous les chiffres de 1 à $nb, $nb compris |
| 14 | + | /* |
| 15 | - | $total = $total * $i; |
| 15 | + | A ce point là, si on voulait la factoriel de 5, voici ce qui s'est passé : |
| 16 | - On rentre dans la boucle, $total est égal à 1, on le multiplie à $i, qui est égal à 1, on a donc 1. On ajoute 1 à $i qui vaut désormais 2. | |
| 17 | - | //On incrémente $i de 1 |
| 17 | + | - $i, qui vaut 2 est inférieur ou égal à $nb, qui vaut 5. Deuxième tour donc dans la boucle. On multiplie $total (qui vaut 1) à $i (qui vaut 2) et on stock ça dans $total. On a donc $total qui vaut 2. On ajoute ensuite 1 à $i, qui vaut désormais 3. |
| 18 | - | $i++; |
| 18 | + | - $i toujours inférieur ou égal à $nb, troisième tour. $total = 2, on le multiplie à 3, ça fait 6. $total vaut donc 6. On rajoute 1 à $i, qui vaut 4. |
| 19 | - | } |
| 19 | + | - $i : 4 <= à $nb, 4ème tour, $total=6, on multiplie par 4, ça fait 24. On met ça dans $total, et on ajoute encore 1 à $i qui devient 5. |
| 20 | - | /* |
| 20 | + | - $i qui vaut 5 égal à $nb, on continue dans la boucle, $total prend la valeur de $total (24) x $i (5) ce qui donne 120. On rajoute 1 à $i qui passe à 6. |
| 21 | - | A ce point là, si on voulait la factoriel de 5, voici ce qui s'est passé : |
| 21 | + | - 6 n'est plus inférieur ou égal à $nb, on arrête de tourner en rond et on sort de la boucle. |
| 22 | - | - On rentre dans la boucle, $total est égal à 1, on le multiplie à $i, qui est égal à 1, on a donc 1. On ajoute 1 à $i qui vaut désormais 2. |
| 22 | + | |
| 23 | - | - $i, qui vaut 2 est inférieur ou égal à $nb, qui vaut 5. Deuxième tour donc dans la boucle. On multiplie $total (qui vaut 1) à $i (qui vaut 2) et on stock ça dans $total. On a donc $total qui vaut 2. On ajoute ensuite 1 à $i, qui vaut désormais 3. |
| 23 | + | On a donc $total = 120. |
| 24 | - | - $i toujours inférieur ou égal à $nb, troisième tour. $total = 2, on le multiplie à 3, ça fait 6. $total vaut donc 6. On rajoute 1 à $i, qui vaut 4. |
| 24 | + | */ |
| 25 | - | - $i : 4 <= à $nb, 4ème tour, $total=6, on multiplie par 4, ça fait 24. On met ça dans $total, et on ajoute encore 1 à $i qui devient 5. |
| 25 | + | |
| 26 | - | - $i qui vaut 5 égal à $nb, on continue dans la boucle, $total prend la valeur de $total (24) x $i (5) ce qui donne 120. On rajoute 1 à $i qui passe à 6. |
| 26 | + | // Il ne nous qu'à renvoyer le résultat. |
| 27 | - | - 6 n'est plus inférieur ou égal à $nb, on arrête de tourner en rond et on sort de la boucle. |
| 27 | + | return $total; |
| 28 | } | |
| 29 | - | On a donc $total = 120. |
| 29 | + | else {
|
| 30 | - | */ |
| 30 | + | // Sinon on renvoit -1, comme dans l'énoncé |
| 31 | return -1; | |
| 32 | - | //Il ne nous qu'à renvoyer le résultat. |
| 32 | + | } |
| 33 | - | return $total; |
| 33 | + | |
| 34 | - | } |
| 34 | + | |
| 35 | - | else {
|
| 35 | + | // La fonction est donc opérationnelle, on va pouvoir l'appeler ! |
| 36 | - | //Sinon on renvoit -1, comme dans l'énoncé |
| 36 | + | |
| 37 | - | return -1; |
| 37 | + | |
| 38 | - | } |
| 38 | + | |
| 39 | ||
| 40 | // Cela va afficher "La factorielle de 5 est 120" | |
| 41 | - | //La fonction est donc opérationnelle, on va pouvoir l'appeler ! |
| 41 | + | echo '<ul>'; |
| 42 | echo '<li>La factorielle de ' . $n . ' est ' . $fact . '.</li>'; | |
| 43 | ||
| 44 | $n=3; | |
| 45 | - | echo "<li>La factorielle de ".$n." est ".$fact.".</li>"; //Cela va afficher "La factorielle de 5 est 120" |
| 45 | + | |
| 46 | ||
| 47 | // Cela va afficher "La factorielle de 3 est 6" | |
| 48 | echo '<li>La factorielle de ' . $n . ' est ' . $fact . '.</li>'; | |
| 49 | - | echo "<li>La factorielle de ".$n." est ".$fact.".</li>"; //Cela va afficher "La factorielle de 3 est 6" |
| 49 | + | echo '</ul>'; |
| 50 | ||
| 51 | - | ?> |
| 51 | + | // Bonne pratique : Ne pas fermer le tag si le fichier ne contient que du PHP |