Maison >développement back-end >Problème PHP >Comment calculer la factorielle d'un nombre n donné via un programme PHP

Comment calculer la factorielle d'un nombre n donné via un programme PHP

青灯夜游
青灯夜游original
2021-08-13 20:13:418094parcourir

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*=

Ensuite, l'opération de multiplication est dans le corps de la boucle. Multipliez la valeur i de chaque boucle pour obtenir un produit

Comment calculer la factorielle dun nombre n donné via un programme PHP

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 : Comment calculer la factorielle dun nombre n donné via un programme PHP

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

Comment calculer la factorielle dun nombre n donné via un programme PHP

<?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 :

  • Comparez la méthode 1, la méthode 2 et la méthode 3. Trouvez-vous qu'elles sont très similaires !
  • D'accord, voici un autre point important. Voyons comment la récursivité implémente la factorielle de N.

  • Méthode 4 : Utiliser la récursivité pour implémenter la factorielle de N

Alors, qu'est-ce que la récursivité ? En termes simples, la récursion signifie que le programme s'appelle lui-même et que la fonction continue de se référencer jusqu'à ce que l'objet référencé soit connu. Les deux conditions suivantes doivent être remplies pour constituer une récursion :

Le sous-problème doit être la même chose que le problème d'origine et plus simple.

Comment calculer la factorielle dun nombre n donné via un programme PHP

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 :

🎜🎜🎜🎜C'est tout . , si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Tutoriel vidéo PHP🎜🎜🎜🎜Recommandation :🎜"🎜Collection de questions d'entretien PHP (collection)🎜"🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn