通过输入字段PHP查找第N个Fibonacci数


Finding the Nth Fibonacci number through input field PHP

我在获取输入代码以处理方程时遇到了一些问题。我已经尝试了一段时间(我是编码新手)和搜索,但无论如何都无法实现。这就是我的结局。有人能帮我吗?提前谢谢。

<!DOCTYPE HTML>
<html> 
<body>
<form action="" method="post">
<br />Choose a number to be the nth in the Fibonacci sequence: <input type="number" name="fibnum">
<input type="submit">
</form> <br /> <br />
<?php

if(isset($_POST['fibnum'])){

    $fibnum = $_POST['fibnum'];

    function fibRec($fibnum){
        if ($fibnum < 0){
        echo "There are no Fibonacci numbers of negative values.";
        }
            elseif ($fibnum == 0){
                echo "0";
            }
                elseif ($fibnum == 1){
                    echo "1";
                }
                    else {
                        $sum = fibRec($fibnum-1)+fibRec($fibnum-2); 
                        echo $sum;
                    }
    }
        $fib = fibRec($fibnum); 
        echo $fib;          
}           
?>    
</body>
</html>

要使其工作,您所需要做的就是将回波更改为如下返回:

<?php
$_POST['fibnum']=11;
if(isset($_POST['fibnum'])){

    $fibnum = $_POST['fibnum'];

    function fibRec($fibnum){
        if ($fibnum < 0){
        return ( "There are no Fibonacci numbers of negative values.");
        }
            elseif ($fibnum == 0){
                return ("0");
            }
                elseif ($fibnum == 1){
                    return ("1");
                }
                    else {
                        $sum = fibRec($fibnum-1)+fibRec($fibnum-2); 
                        return ($sum);
                    }
    }
        $fib = fibRec($fibnum); 
        echo $fib;          
}           
?>  

工作演示:http://ideone.com/e0xeY7

您将整数推入echo。在递归公式中,返回值将返回到调用实体,而不是在函数外部自动返回。

看看这个:

<!DOCTYPE HTML>
<html> 
<body>
<form action="" method="post">
<br />Choose a number to be the nth in the Fibonacci sequence: <input type="number" name="fibnum">
<input type="submit">
</form> <br /> <br />
<?php

if(isset($_POST['fibnum'])){

    $fibnum = $_POST['fibnum'];

    function fibRec($fibnum){
        if ($fibnum < 0){
        echo "There are no Fibonacci numbers of negative values.";
        }
            elseif ($fibnum == 0){
                return 0;
            }
                elseif ($fibnum == 1){
                    return 1;
                }
                    else {
                        $sum = fibRec($fibnum-1)+fibRec($fibnum-2); 
                        return $sum;
                    }
    }
        $fib = fibRec($fibnum); 
        echo $fib;          
}           
?>    
</body>
</html>

您还可以使用与黄金比例相关的PHI常数来计算第n个斐波那契数。人们认为,直到第五次迭代,fibonnaci数都不是按照黄金比例的,所以你可以得到如下结果:

<?php 
$fibnum = intval($_POST['fibnum']);
const PHI = 1.6180339887;
$f = [0, 1, 1, 2, 3];
echo getNthFibo($fibnum);
function getNthFibo($i)
{
    if($i < 5){
        return $f[$i];
    }
    // Starting from 5th iteration of fibo function
    $n = 5;
    $fn = 3;
    while ($n < $i) { 
        $fn = round($fn * PHI); 
        $n++; 
    }
    return $fn; 
}