【问题标题】:Use php function in php form以php形式使用php函数
【发布时间】:2021-09-02 07:03:34
【问题描述】:

我是 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>

【问题讨论】:

  • 旁注:header("Content-Type: text/html; charset=windows-1250"); 会因为它在脚本中的位置而产生警告,而且实际上没有必要。
  • 无论如何,练习似乎希望你编写自己的函数来计算功率,而不是使用内置的 pow 函数,并且他们希望你让它递归(我猜它将一次计算一个级别的功率,直到极限)。你到底卡在哪里了?你了解递归吗?

标签: php forms function recursion


【解决方案1】:

我认为您在这里遗漏了一个关键概念。什么是递归。

递归函数是在执行过程中调用自身的函数。 https://en.wikipedia.org/wiki/Recursion_(computer_science)

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

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

【讨论】:

  • 谢谢,这很有帮助:) @g9m29
猜你喜欢
  • 2015-06-27
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 2018-03-19
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
相关资源
最近更新 更多