php實現斐波那契數列以及由此引起的聯想

來源:互聯網
上載者:User

標籤:

   斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,費伯納西數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現代物理、准晶體結構、化學等領域,費伯納西數列都有直接的應用。————摘自百度百科

公式:

  F(n)=F(n-1)+F(n-2)

網上有太多實現斐波那契數列的方法了,這裡就不引述,唯寫一下個人的實現方法,雖然不怎麼嚴謹,但個人感覺還行,需要的朋友可以借鑒一下

php實現原理(當然也有其他的方式或者原理):

  構建數組,通過中間替換變數,求取數組的最後一個元素,迴圈添加到數組中

<?php    /*    *函數功能求出斐波那數列的最後一項的值    *@param1 數列的第一個值 $one    *@param2 數列的第二個值 $two    *@parma3 數列的第n項,也是數列的元素個數,$n    *傳回值,斐波那數列的最後一項的值    */    function Fobb($one,$two,$n){        //不是整數則返回false,這裡只考慮整數的情況        if(!is_int($one) || !is_int($two)) return false;        if(!is_int($n) || $n < 2) return false;//判斷$n是否為正整數        //初始化斐波那契數列        $arr = array($one,$two);        //初始化最後一項的值        $j = $two;        //迴圈添加斐波那契數列的元素        for($i=0;$i<$n-2;$i++){            $j= $arr[$i] + $j;            //把最後一項添加數列的尾部            array_push($arr,$j);        }        return $j;    }    var_dump(Fobb(0,1,60));//32位系統的超過2147483647就轉為float類型

根據這個中間替換變數,迴圈添加數組元素的方式,我們也可以用它來實現階乘

<?php//求一個整數的階乘function factorial($n){    if(!is_int($n) || $n<0) return false;    //初始化階乘數組    $arr = array($n);    //初始化階乘的值    $j = 1;    for($i=0;$i<$n;$i++){        //利用階乘公式求階乘的值,儲存在中間中間變數$j中        $j = $j*($n-$i);        array_push($arr,$j);    }    return $j;}var_dump(factorial(1));

結語:

利用這個中間替代變數的方法實現一些程式功能,我想這是一個非常有用的程式思維,這是我實現斐波那契數列數列求值所獲得的東西

 

php實現斐波那契數列以及由此引起的聯想

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.