首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP斐波那契数列

PHP斐波那契数列
EN

Stack Overflow用户
提问于 2013-03-24 23:05:08
回答 34查看 90.6K关注 0票数 8

假设此php方法使用for循环将斐波那契序列打印到指定值。我不确定为什么它不能工作?

代码语言:javascript
复制
<?php
function fib ($n) { // a function called fib, declaire variable n (the sequence number)
    for ($n=0;$n<30;$n++) {
        if ($n < 3) { return $n; } // if n is smaller than 3 return n (1 or 2)
        else { return fib ($n - 1) + fib ($n - 2); } 
    /* if the number is 3 or above do 2 sums (n-1) and (n-2)
    and then add the 2 sums together (n-1)+(n-2)
    Example Fibonacci number 4
    (4-1)+(4-2) = 5
    3 + 2 = 5
    */
}
print $n;
?>
EN

回答 34

Stack Overflow用户

回答已采纳

发布于 2014-11-28 21:57:59

实际上,有一种方法可以通过四舍五入来计算Fibonacci数,而无需迭代:

http://en.wikipedia.org/wiki/Fibonacci_number#Computation_by_rounding

代码语言:javascript
复制
function getFib($n)
{
    return round(pow((sqrt(5)+1)/2, $n) / sqrt(5));
}
票数 41
EN

Stack Overflow用户

发布于 2013-08-10 04:38:57

fibonacci的简单函数

代码语言:javascript
复制
function fibonacci($n,$first = 0,$second = 1)
{
    $fib = [$first,$second];
    for($i=1;$i<$n;$i++)
    {
        $fib[] = $fib[$i]+$fib[$i-1];
    }
    return $fib;
}
echo "<pre>";
print_r(fibonacci(50));
票数 8
EN

Stack Overflow用户

发布于 2014-04-17 14:35:00

在本例中,我使用了for循环,并将长度限制为10:

代码语言:javascript
复制
$x = 0;    
$y = 1; 

for($i=0;$i<=10;$i++)    
{    
    $z = $x + $y;    
    echo $z."<br />";         
    $x=$y;       
    $y=$z;     
}   

输出:

1

2

3.

5

8

13

21

34

55

89

144

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15600041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档