Maison >développement back-end >Problème PHP >Comment calculer la factorielle d'un nombre n donné via un programme PHP
Dans l'article précédent "PHP Loop Learning 9 : Obtention du plus grand diviseur commun entre deux nombres donnés", nous avons présenté la méthode d'utilisation de l'instruction de boucle while pour trouver le plus grand diviseur commun entre deux nombres entiers donnés. Cette fois, nous allons le faire. parlez de factorielle et présentez comment calculer la factorielle d'un entier N donné. Les amis intéressés peuvent en apprendre davantage ~
Tout d'abord, comprenonsQu'est-ce que la factorielle ?
La factorielle d'un entier positif fait référence au produit de tous les entiers positifs inférieurs et égaux au nombre. Par conséquent, la factorielle d'un entier N donné est :
1 × 2 × 3×...× (n-1) × n
Trouver la factorielle est très simple, et les étudiants qui débutent en programmation Je le rencontrerai certainement. Il existe de nombreuses façons de mettre en œuvre un problème de programmation. Cet article vous présentera diverses méthodes d'implémentation factorielle du point de vue de la boucle for, de la boucle while, de la boucle do-while et de la récursivité.
Méthode 1 : Utiliser une boucle for pour implémenter la factorielle de N
Idée d'implémentation :
Parce que trouver la factorielle de n, c'est trouver le produit de 1 fois 2 fois 3... jusqu'à n. Par conséquent, la condition initiale de la boucle for peut être définie sur i = 1
et la condition de restriction peut être i ou <code>i . <br><code>i = 1
,限制条件可以是 i 或者 <code>i 。<br>
然后循环体中的就是乘法运算了,将每次循环的 i 值相乘,得到一个乘积
最后输出乘积即可
下面看看实现方法:
<?php header("Content-type:text/html;charset=utf-8"); //第一种方法--for循环 function Factorial($n) { $sum = 1; for ($i = 1; $i <= $n; $i++) { $sum *= $i; } echo "$n 的阶乘为: " . $sum."<br><br>"; } Factorial(5); Factorial(10); Factorial(100); ?>
$sum *= $i
语句等价于$sum=$sum*$i
,*=
Enfin, sortez le produit
Voir ci-dessous Regardez le méthode d'implémentation :
<?php header("Content-type:text/html;charset=utf-8"); //第二种方法--while循环 function Factorial($n) { $i = 1; $sum=1; while($i<=$n){ $sum*=$i; $i++; } echo "$n 的阶乘为: " . $sum."<br><br>"; } Factorial(1); Factorial(2); Factorial(3); Factorial(11); ?>
$sum *= $i
est équivalent à $sum=$sum*$i
, *=
affectation. L'opérateur peut multiplier la variable du côté gauche de l'opérateur par la valeur de l'expression du côté droit et l'attribuer à la variable du côté gauche. Remarque : Puisque toute valeur multipliée par 0 est 0, la valeur initiale de la variable $sum doit être 1.
Jetons un œil aux résultats de sortie :
Maintenant que nous comprenons comment la boucle for implémente la factorielle de N, nous connaissons presque les méthodes d'implémentation de la boucle while et de la boucle do-while (leur implémentation en pensant c'est pareil).
Méthode 2 : Utiliser une boucle while pour implémenter la factorielle de N<?php header("Content-type:text/html;charset=utf-8"); //第三种方法--do while循环 function Factorial($n) { $i = 1; $sum=1; do { $sum *= $i; $i++; } while ($i <= $n); echo "$n 的阶乘为: " . $sum."<br><br>"; } Factorial(2); Factorial(3); Factorial(4); Factorial(10); ?>Résultat de sortie :
Méthode 3 : Utiliser une boucle do-while pour implémenter la factorielle de N
f(1) = 1 f(n) = n * f(n-1) {n>1}
Résultat de sortie :
ne peut pas s'appeler de manière illimitée, il doit y avoir une sortie qui simplifie le traitement de la situation non récursive.
Selon la pensée récursive, la factorielle peut être exprimée par la formule suivante : <?php
header("Content-type:text/html;charset=utf-8");
//第四种方法--递归
function Factorial($n) {
$sum=1;
if($n <= 1){
return 1;
}else{
$sum = $n * factorial($n-1);
return $sum;
}
}
echo "2 的阶乘为: " .Factorial(2)."<br><br>";
echo "3 的阶乘为: " .Factorial(3)."<br><br>";
echo "4 的阶乘为: " .Factorial(4)."<br><br>";
echo "10 的阶乘为: " .Factorial(10);
?>
Par conséquent, le code pour utiliser PHP pour trouver récursivement N factorielle est le suivant : rrreeeRésultat de sortie :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!