使用php形式的php函数



我是php新手,正在解决一项任务。

  • 创建一个包含2个文本字段的表单,只输入数字(处理(,表示数字和幂
  • 按下按钮后,结果显示在同一页面上,结果由递归函数确定
  • 如果您忘记输入数字,将自动插入数字2

我现在有这个,但我不知道如何继续。你能给我建议吗?

<!DOCTYPE html>
<html>
<head>
<title>Task</title>
</head>
<body>
<form method="post">  
Input number:  
<input type="number" name="number1" /><br><br>  
Input power:  
<input type="number" name="number2" /><br><br>  
<input  type="submit" name="submit" value="Submit">  
</form>  
<?php 
header("Content-Type: text/html; charset=windows-1250");
if(isset($_POST['submit']))  
{  
$number1 = $_POST['number1'];  
$number2 = $_POST['number2'];
echo(pow($number1,$number2) . "<br>");
}

?>  

</body>
</html>

我认为这里缺少一个关键概念。什么是递归。

递归函数是指在执行过程中调用自己的函数。https://en.wikipedia.org/wiki/Recursion_(计算机科学(

对于您的问题,我认为这是一个可以接受的解决方案:

<!DOCTYPE html>
<html>
<head>
<title>Task</title>
</head>
<body>
<form method="post">
Input number:
<input type="number" name="number1" /><br><br>
Input power:
<input type="number" name="number2" /><br><br>
<input  type="submit" name="submit" value="Submit">
</form>
<?php
function pow_recursion($number, $power) {
if ($power == 0) {
return 1;
} else {
return $number * pow_recursion($number, $power - 1);
}
}
if(isset($_POST['submit']))
{
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
if (!$number2) {
$number2 = 2;
}
echo(pow_recursion($number1, $number2) . "<br>");
}
?>

</body>
</html>

递归函数的另一个实现是

function pow_recursion($number, $power) {
if ($power == 0) {
return 1;
} elseif ($power % 2 == 0) {
$tmp = pow_recursion($number, intdiv($power, 2));
return $tmp * $tmp;
} else {
return $number * pow_recursion($number, $power - 1);
}
}

如果我没有记错的话,性能的差异是N与log(N(。

最新更新