2017-04-21 2 views
0

J'ai eu un problème pour une C(m,n)=m!/n!(m-n)! formule à l'aide d'une fonction et for boucle en php, mon regard de code comme ceci:2 différentes entrées du numéro factoriel en utilisant la fonction et la boucle en php

<?php 
 
function factorial($m,$n){ 
 
\t $facm=$m; 
 
\t for ($i=$m-1; $i >= 1 ; $i--) { 
 
\t \t $facm*=$i; 
 
\t } 
 
\t $facn=$n; 
 
\t for ($i=$n-1; $i >= 1 ; $i--) { 
 
\t \t $facn*=$i; 
 
\t } 
 
\t $faco=$m-$n; 
 
\t for ($i=$m-$n; $i >= 1 ; $i--) { 
 
\t \t $faco*=$i; 
 
\t } 
 
\t return $facm/$facn*$faco; 
 
} 
 
} 
 

 
echo factorial($bilm,$biln); 
 
?>

mais ce code montre un mauvais résultat, est-ce que quelque chose ne va pas avec mon code? Merci de votre attention.

+0

ce qui est 2 entrée factoriel? vous voulez trouver la factorielle de 2 nombres différents? – siddiq

+0

ouais, c'est ce que je veux dire, est-il possible d'utiliser la fonction factorielle ($ m, $ n)? si possible, comment le faire? merci –

Répondre

0

Oui, vous pouvez faire comme ci-dessous s'il s'agit de 2 paramètres. Si les paramètres changent dynamiquement, passez le tableau à la fonction et faites-y un foreach.

<?php 
    $bilm = $_POST['bilm']; 
    $biln = $_POST['biln']; 

    function factorial($m,$n){ 

      $facm=$m; 
      for ($i=$m-1; $i >= 1 ; $i--) { 
       $facm*=$i; 
      } 

      $facn=$n; 
      for ($i=$n-1; $i >= 1 ; $i--) { 
       $facn*=$i; 
      } 

      $facmsubn = $msubn=$m-$n; 
      for ($i=$msubn-1; $i >= 1 ; $i--) { 
       $facmsubn*=$i; 
      } 

      return ($facm/$facn)*$facmsubn; //By assuming (m!/n!)*(m-n)!; If it is m!/(n!*(m-n)!) then change the logic as per your formula 
    } 
      echo factorial($bilm,$blin); 
    ?> 

Mais pourquoi avez-vous besoin de passer 2 paramètres? Appeler la fonction deux fois aurait du sens.

Runtime Environment est ici http://phpfiddle.org/main/code/zkfs-21am

+0

j'essaye de faire cette formule: C (m, n) = m!/n! (m-n) !, j'utilise votre suggestion, avec mon code, mais le résultat n'est toujours pas juste. –

+0

J'ai mis à jour le code selon votre formule. Cela devrait fonctionner. Changez également la logique selon vos besoins dans le code et faites le moi savoir. – siddiq

+0

J'ai du mal à insérer du code snippet à ce commentaire, j'ai essayé d'utiliser ctrl + k mais ça ne marche pas, j'ai essayé 4 espaces avant la ligne, ça ne marche pas non plus. essayez d'utiliser ">", ne fonctionne pas trop. comment insérez-vous votre code dans un commentaire @siddiq? Je veux montrer mon code, mais c'est montrer la forme horrible. –