PHP 析因问题

PHP Factorial Issue

我正在尝试学习 PHP 并在给定用户输入时计算数字的阶乘,但我似乎被难住了。我的第一个也是最后一个条件检查但是当我输入大于 2 的数字时我的结果总是错误的,这是我的代码:

<!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>

我尝试编辑此行的许多变体 echo $n * factorial($n - 1);但所有结果都是假的或错误的,我似乎无法破解。有任何想法吗?请注意,我试图将 php 保留在内部正文中,而不是外部 php 文件。

给你:

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

要使您的递归函数起作用,它需要 return 一个数字。否则,您的函数将尝试计算 $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);
}

查看此解决方案,在 PHP?

中找到给定数字的阶乘
<?php

function findFactorial($num){
  $fact = 1;
  for($i=1; $i<$num+1; $i++){
    $fact = $fact*$i;
  }
  return $fact;

}
$num = 5;
print_r(findFactorial($num));
?>