I am new in php, I am solving one task.
- Create a form with 2 text fields to enter only numbers (treat) and will mean number and power.
- After pressing the button the result is displayed on the same page, and the result is determined by recursive function
- in case you forget to enter a number, the number 2 will be inserted automatically.
I have this for now, but I don’t know how to proceed. Can you advise me please?
<!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>
Advertisement
Answer
I think you are missing a key concept here. What is recursion.
A recursive function is a function that calls itself during its execution. https://en.wikipedia.org/wiki/Recursion_(computer_science)
For your question this is an acceptable solution I believe:
<!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>
Another implementation of the recursive function is
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);
    }
}
If I am not mistaken the difference in performance is N vs log(N).