通过输入字段查找第 N 个斐波那契数 PHP

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>

要使其正常工作,您需要做的就是将回声更改为 returns,如下所示:

<?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 个斐波那契数。认为第 5 次迭代之前的斐波纳契数不符合黄金比例,因此您可以像下面这样:

<?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; 
}