php中的fibanocci级数

php中的fibanocci级数,php,Php,我创建了一个用php制作斐巴诺契数列的程序 function find_max_paths_fib($spaces) { $c = array(); $c[0] = 1; $c[1] = 1; for ($i = 2; $i <= $spaces; $i++) { if ($i >= 2) { echo $c[$i] = $c[$i-2] + $c[$i-1]; } } re

我创建了一个用php制作斐巴诺契数列的程序

function find_max_paths_fib($spaces) {

    $c = array();
    $c[0] = 1;
    $c[1] = 1;

    for ($i = 2; $i <= $spaces; $i++) {
        if ($i >= 2) {
            echo $c[$i] = $c[$i-2] + $c[$i-1];
        }
    }

    return $c[$spaces];


}
函数find\u max\u path\u fib($spaces){
$c=数组();
$c[0]=1;
$c[1]=1;
对于($i=2;$i=2){
echo$c[$i]=$c[$i-2]+$c[$i-1];
}
}
返回$c[$spaces];
}
$空间表示生成序列所需的数目,但FINDIXMAXPATSHIFIB(8000)或对于一些大的返回<强> INF>强,我已经尝试过C++,得到相同的结果。有没有办法计算呢?或者我的函数错了吗?

您必须使用或来处理大量数据

要安装此模块,请在终端中使用flowing命令:

sudo apt-get install php7.0-bcmath // set your php version 
#or sudo apt-get install php7.2-bcmath
#or sudo apt-get install php7.1-bcmath
#or sudo apt-get install php-bcmath 
或者,如果使用GNU多精度:

sudo apt-get install php70-gmp// set your php version 
#or sudo apt-get install php7.2-gmp
#or sudo apt-get install php7.1-gmp
#or sudo apt-get install php-gmp 
如果使用microsoft windows:

安装后重新启动apache

使用BCMath:

$sum = bcadd('1234567812345678', '8765432187654321');

// $sum is now the string '9999999999999999'
print $sum;
使用GMP:

$sum = gmp_add('1234567812345678', '8765432187654321');

// $sum is now a GMP resource, not a string; use gmp_strval( ) to convert
print gmp_strval($sum);
最终代码:

function find_max_paths_fib2($spaces) {

    $c = array();
    $c[1] = 1;
    $c[2] = 1;

    for ($i = 3; $i <= $spaces; $i++) {
        if ($i >= 3) {
            echo $c[$i] = bcadd($c[$i-2] , $c[$i-1]);
        }
    }

    return $c[$spaces];


}
函数find_max_path_fib2($spaces){
$c=数组();
$c[1]=1;
$c[2]=1;
对于($i=3;$i=3){
echo$c[$i]=bcadd($c[$i-2],$c[$i-1]);
}
}
返回$c[$spaces];
}

斐波那契(8000)的值超出了整数范围。它包含1600多个数字。在这个链接上检查n=8000-他们如何打印这些值?有图书馆功能吗?因为php变量不需要用数据类型指定,所以我不认为它是以整数的形式计算的,而是以浮点的形式转换。您使用的是64b处理器吗?对于如此大的数字,基本数据类型,即使是双精度的,也不起作用。必须实现基于字符串的乘法技术。@Joseph_J fibonacci(8000)是任何原始数据类型都无法实现的range@NaveenKingmaker在这种情况下,将进行数值计算,例如StringSeems奇怪的计算,这个东西返回以“2390…”开头的数字,但我的脚本返回以…开头的数字“3867….”,好奇地想知道为什么会出现这种差异(我提供了n=8181)@NaveenKingmaker我们从0开始n!
c[0]=1;
8181在我们的代码中等于8082在n是(索引$c)+1我编辑了我的答案!测试新函数(find_max\u paths\u fib2)