2017-04-21 90 views
0

循環我有一個問題,使用功能和for循環在PHP製作C(m,n)=m!/n!(m-n)!公式,我的代碼如下所示:2個不同的數字輸入階乘使用功能在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); 
 
?>

但這段代碼顯示錯誤的結果,我的代碼有問題嗎?感謝您的關注。

+0

什麼是2輸入因子?你想找到2個不同數字的階乘? – siddiq

+0

是的,這就是我的意思,是否可以使用函數階乘($ m,$ n)?如果有可能,如何做到這一點?謝謝 –

回答

0

是的,你可以像下面這樣做,如果它堅持2個參數。如果參數是動態改變的,那麼將數組傳遞給函數並在那裏做一個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); 
    ?> 

但爲什麼你需要傳遞2個參數?調用這個函數兩次是有道理的。

運行環境在這裏http://phpfiddle.org/main/code/zkfs-21am

+0

我試圖讓這個公式:C(m,n)= m!/ n!(m-n)!,我用你的建議,用我的代碼,但結果仍然不正確。 –

+0

我根據你的公式更新了代碼。這應該工作。根據您在代碼中的需求更改邏輯並讓我知道。 – siddiq

+0

我有問題插入片段代碼到這個評論,我試圖使用CTRL + K,但是這是行不通的,我試過4行前的空格,它也不工作。嘗試使用「>」,而不是工作。你如何將你的代碼插入評論@siddiq?我想展示我的代碼,但它顯示出可怕的形式。 –