PHP 析因问题

标签 php html forms function factorial

我正在尝试学习 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 文件。

最佳答案

要使您的递归函数起作用,它需要返回一个数字。否则,您的函数将尝试计算 $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 析因问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38810734/

相关文章:

php - Android GCM 一台设备有多个registrationid

php - wamp 服务器 500 内部服务器错误

java - Apache 状态 500 : Null pointer exception

PHP 获取数组变量提交后的值

javascript - 输入号码 HTML5 : is there an event which triggers on every step?

PHP Ajax 表单发送

php - 使用 Zend_Db 时 pdo_mysql 与 mysqli

php - 记录 PHP 通知错误

html - CSS 菜单重叠元素

html - 如何在html中一次提交打开两个页面?