2016-08-07 21 views
2

我正在嘗試學習PHP,並在給出來自用戶的輸入時計算一個數字的階乘,但我似乎被難住了。我的第一個和最後一個條件結賬,但是當我把一個數大於2我的結果總是假的,這裏是我的代碼:PHP因式問題

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>Factorial</title> 
 
    </head> 
 
    <body> 
 
    <form action="" method="GET"> 
 
     Enter Number: <input type="text" name="num"><br> 
 
     <input type="submit" name ="submit"> 
 
    </form> 
 
    Factorial Of Your Number: 
 
    <?php 
 
     function factorial($n){ 
 

 
      if (ctype_digit($n)) 
 
      { 
 
       if ($n <= 1) 
 
       { 
 
        echo "1"; 
 
       } 
 
       else 
 
       { 
 
       echo $n * factorial($n - 1); 
 
       } 
 
      } 
 
      else 
 
      { 
 
      echo "false"; 
 
      } 
 
     } 
 
     if(isset($_GET['submit'])) 
 
     { 
 
     $s = $_GET["num"]; 
 
     factorial($s); 
 
     } 
 
    ?> 
 
    </body> 
 
</html>

我試圖修改此線路回聲$的許多變化n *階乘($ n - 1);但都導致錯誤或錯誤,我似乎無法破解這一點。有任何想法嗎?請注意,我試圖保持內部身體不是一個externalphp文件的PHP。

回答

1

爲了您的遞歸函數的工作,它需要返回一個數字。否則,你的函數將嘗試計算$n * null,這會引發錯誤。

function factorial($n){ 
    if ($n <= 1) { 
     return 1; 
    } else { 
     return $n * factorial($n - 1); 
    } 
} 

if (isset($_GET['submit'])) { 
    $n = intval($_GET["num"]); 
    echo factorial($n); 
} 
-1

在這裏你去:

<?php 
    $num = $_POST["num"]; 
    $factorial_value = 1; 
    for ($x=$num; $x>=1; $x--) 
    { 
     $factorial_value = $factorial_value * $x; 
    } 
    echo "Factorial of $num is $factorial"; 
?> 

<form method="post"> 
    Enter a num: 
    <input type="text" name="num"> 
    <input type="submit" Value="CALCULATE YOUR FACTORIAL"> 
</form> 
+0

即時得到這是輸入 – lucyb

+0

在這裏定義錯誤的計算法返回值的錯誤.. – Noman

+0

檢查我的編輯版本.. – Noman