斐波那契数列(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实现原理(当然也有其他的方式或者原理):

  构建数组,通过中间替换变量,求取数组的最后一个元素,循环添加到数组中

  1. <?php
  2. /*
  3. *函数功能求出斐波那数列的最后一项的值
  4. *@param1 数列的第一个值 $one
  5. *@param2 数列的第二个值 $two
  6. *@parma3 数列的第n项,也是数列的元素个数,$n
  7. *返回值,斐波那数列的最后一项的值
  8. */
  9. function Fobb($one,$two,$n){
  10. //不是整数则返回false,这里只考虑整数的情况
  11. if(!is_int($one) || !is_int($two)) return false;
  12. if(!is_int($n) || $n < 2) return false;//判断$n是否为正整数
  13. //初始化斐波那契数列
  14. $arr = array($one,$two);
  15. //初始化最后一项的值
  16. $j = $two;
  17. //循环添加斐波那契数列的元素
  18. for($i=0;$i<$n-2;$i++){
  19. $j= $arr[$i] + $j;
  20. //把最后一项添加数列的尾部
  21. array_push($arr,$j);
  22. }
  23. return $j;
  24. }
  25. var_dump(Fobb(0,1,60));//32位系统的超过2147483647就转为float类型

根据这个中间替换变量,循环添加数组元素的方式,我们也可以用它来实现阶乘

  1. <?php
  2. //求一个整数的阶乘
  3. function factorial($n){
  4. if(!is_int($n) || $n<0) return false;
  5. //初始化阶乘数组
  6. $arr = array($n);
  7. //初始化阶乘的值
  8. $j = 1;
  9. for($i=0;$i<$n;$i++){
  10. //利用阶乘公式求阶乘的值,保存在中间中间变量$j中
  11. $j = $j*($n-$i);
  12. array_push($arr,$j);
  13. }
  14. return $j;
  15. }
  16. var_dump(factorial(1));

结语:

利用这个中间替代变量的方法实现一些程序功能,我想这是一个非常有用的程序思维,这是我实现斐波那契数列数列求值所获得的东西

php实现斐波那契数列以及由此引起的联想的更多相关文章

  1. C#求斐波那契数列第30项的值(递归和非递归)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)

    对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - ) + F(n - ),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围 ...

  3. js中的斐波那契数列法

    //斐波那契数列:1,2,3,5,8,13…… //从第3个起的第n个等于前两个之和 //解法1: var n1 = 1,n2 = 2; for(var i=3;i<101;i++){ var ...

  4. 剑指Offer面试题:8.斐波那契数列

    一.题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: 二.效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时 ...

  5. 算法: 斐波那契数列C/C++实现

    斐波那契数列: 1,1,2,3,5,8,13,21,34,....     //求斐波那契数列第n项的值 //1,1,2,3,5,8,13,21,34... //1.递归: //缺点:当n过大时,递归 ...

  6. 洛谷P1962 斐波那契数列 || P1349 广义斐波那契数列[矩阵乘法]

    P1962 斐波那契数列 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数 ...

  7. Python递归及斐波那契数列

    递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可 ...

  8. 简单Java算法程序实现!斐波那契数列函数~

    java编程基础--斐波那契数列 问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路:可能出现的情况:(1) n=1 ,一种方法 ;(2)n=2 ...

  9. js 斐波那契数列(兔子问题)

    对于JS初学者来说,斐波那契数列一直是个头疼的问题,总是理不清思路. 希望看完这篇文章之后会对你有帮助. 什么是斐波那契数列 : 答: 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契(Le ...

随机推荐

  1. Mac or Centos 下如何编译objective-C

    #import <Foundation/Foundation.h> int main(int argc,const char *argv[]){ @autoreleasepool{ NSL ...

  2. String数组转List,List转String数组

    引入自: http://blog.csdn.net/aaronuu/article/details/7055650 List 转换为 String数组 List<String> list  ...

  3. 【液晶模块系列基础视频】3.2fatfs接口函数的使用2

    ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...

  4. HDU 1043 & POJ 1077 Eight(康托展开+BFS+预处理)

    Eight Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30176   Accepted: 13119   Special ...

  5. Apache Spark源码走读之10 -- 在YARN上运行SparkPi

    y欢迎转载,转载请注明出处,徽沪一郎. 概要 “spark已经比较头痛了,还要将其运行在yarn上,yarn是什么,我一点概念都没有哎,再怎么办啊.不要跟我讲什么原理了,能不能直接告诉我怎么将spar ...

  6. PHP Error 和 Logging 函数

    PHP Error 和 Logging 函数 PHP Error 和 Logging 简介 Error 和 Logging 函数允许您对错误进行处理和记录. Error 函数允许用户定义错误处理规则, ...

  7. 【IOS笔记】About Events in iOS

    About Events in iOS Users manipulate their iOS devices in a number of ways, such as touching the scr ...

  8. [转]通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

    http://www.csdn.net/article/2015-07-31/2825348 [编者按]时下,对于大部分IT玩家来说,Docker和Mesos都是熟悉和陌生的:熟悉在于这两个词无疑已成 ...

  9. PHP学习(五)----jQuery和JSON数据

    对于jQuery: jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程.

  10. NHibernate学习笔记

    原文详见http://www.cnblogs.com/GoodHelper/archive/2011/02/16/nhibernate_03.html   NHibernate_Demo程序框架: D ...