php用do while实现斐波那契数列,php实现斐波那契数列

本文详细介绍了斐波那契数列的递归和非递归实现,包括C++和JavaScript的代码示例。同时,讨论了递归方法在处理大数值时的效率问题,并提出了空间复杂度为O(1)的优化方案。此外,还涉及到了Java和Python中的斐波那契数列计算,并提到了在面试中可能遇到的斐波那契数列相关问题。
摘要由CSDN通过智能技术生成

斐波那契数列:

1 1 2 3 5 8 13 21 34 55 …

概念:

前两个值都为1,该数列从第三位开始,每一位都是当前位前两位的和

规律公式为:

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

F:指当前这个数列

n:指数列的下标

非递归写法:

function fbnq($n){ //传入数列中数字的个数

if($n <= 0){

return 0;

}

$array[1] = $array[2] = 1; //设第一个值和第二个值为1

for($i=3;$i<=$n;$i++){ //从第三个值开始

$array[$i] = $array[$i-1] + $array[$i-2];

//后面的值都是当前值的前一个值加上前两个值的和

}

return $array;

}

递归写法:

function fbnq($n){

if($n <= 0) return 0;

if($n == 1 || $n == 2) return 1;

return fbnq($n - 1) + fbnq($n - 2);

}

C&num;求斐波那契数列第30项的值(递归和非递归)

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

斐波拉契数列加强版——时间复杂度O&lpar;1&rpar;,空间复杂度O&lpar;1&rpar;

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

js中的斐波那契数列法

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

剑指Offer面试题:8&period;斐波那契数列

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

算法&colon; 斐波那契数列C&sol;C&plus;&plus;实现

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

洛谷P1962 斐波那契数列 &vert;&vert; P1349 广义斐波那契数列&lbrack;矩阵乘法&rsqb;

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

Python递归及斐波那契数列

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

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

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

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

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

剑指offer三&colon; 斐波拉契数列

斐波拉契数列是指这样一个数列: F(1)=1; F(2)=1; F(n)=F(n-1)+F(n); public class Solution { public int Fibonacci(int n ...

随机推荐

&lbrack;C&plus;&plus;&rsqb; socket -8 &lbrack;命名管道&rsqb;

::命名管道不但能实现同一台机器上两个进程通信,还能在网络中不同机器上的两个进程之间的通信机制.与邮槽不同,命名管道是采用基于连接并且可靠的传输方式,所以命名管道传输数据只能一对一进行传输. /* 命 ...

Android的webview加载本地html、本apk内html和远程URL

//打开本包内asset目录下的index.html文件 wView.loadUrl(" file:///android_asset/index.html "); //打开本地sd ...

Centos清理内存 内存回收释放及内存使用查看的相关命令

在清理前内存使用情况 free -m 用以下命令清理内存 echo 1 > /proc/sys/vm/drop_caches 清理后内存使用情况再用以下命令看看. free –m 多出很多内存了 ...

TDD测试驱动的javascript开发&lpar;3&rpar; ------ javascript的继承

说起面向对象,人们就会想到继承,常见的继承分为2种:接口继承和实现继承.接口继承只继承方法签名,实现继承则继承实际的方法. 由于函数没有签名,在ECMAScript中无法实现接口继承,只支持实现继承. ...

jdk8 之 java&period;time包AND DateUtils

package com.jansh.comm.util; import java.time.Clock; import java.time.LocalDate; import java.time.Lo ...

Matlab将三维变量分割为多个二维变量的方法

最近在处理 Matlab 中的三维矩阵的时候,遇到了一个问题: 假如m 为 5*5*5的矩阵,如果以第三个维度为基础,分割为5个不同的矩阵 m1,m2,m3,m4,应该如何解决? 解决方法:eval函 ...

【SoDiaoEditor电子病历编辑器】阶段性更新啦

转眼距离上一次v2正式发布已经过去一个半月了.github期间不定期push了二十几次,同时感谢分布在广州.福建.上海.北京的一众小伙伴,正是你们给出的建议,才让SoDiaoEditor不断完善. 我 ...

使用Docker运行Microsoft SQL Server 2017

最近每天都在空闲时间努力编写Apworks框架的案例代码WeText.在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-comp ...

华为S12700 NQA配置

首先,nqa功能是需要授权的. 以下以ICMP配置方式示例: 在配置ICMP测试之前,需要NQA客户端与被测试设备间路由可达.(ICMP测试提供类似于普通ping命令的功能,但输出信息更为丰富.) 请 ...

GIFDecoder源码分析

源码见:ddxxll2008/gifdecoder_java run() public void run(){ if(in != null){ readStream(); }else if(gifDa ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值