我正在尝试学习 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/