JS 实现斐波那契数列 #15

简介: JS 实现斐波那契数列 #15

斐波那契数列


0,1,1,2,3,5,8 像这样的数列就是斐波那契数列,特点是第n项等于前两项的和。


递归实现


function fib(n) {
    if (n == 0) {
        return 0;
    }
    if (n == 1) {
        return 1;
    }
    return fib(n - 1) + fib(n - 2);
}
console.log(fib(5));


迭代实现


function fib(n) {
    var a = 0,
        b = 1,
        total = 0;
    if (n < 2) {
        return n;
    }
    for (var i = 2; i <= n; i++) {
        total = a + b;
        a = b;
        b = total;
    }
    return total;
}
console.log(fib(5));


总结


斐波那契数列最好不要用递归去实现,因为它在重复计算,而迭代计算的效率则要高很多并且时间复杂度为O(n),不信?输入个100看看?所以,面试的时候用迭代去写会让面试官更称心如意。

目录
相关文章
|
SQL JavaScript 前端开发
Hive根据用户自定义函数、reflect函数和窗口分析函数
Hive根据用户自定义函数、reflect函数和窗口分析函数
187 6
|
安全 网络安全 数据安全/隐私保护
修复ICMP权限许可和访问控制漏洞
修复ICMP权限许可和访问控制漏洞
880 0
|
C++ Python Windows
用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)(一)
用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)(一)
752 0
|
前端开发 JavaScript
|
JavaScript 开发者
Vue基础(2)
Vue基础(2)
257 0
Vue基础(2)
|
存储 数据挖掘 数据库
python:Pandas的数据结构:Series,DataFrame
1.Pandas提供的数据结构和函数的设计,将使表格数据的工作快速、简单、更易懂。所以利用Pandas进行数据操作、预处理、清洗是Python数据分析中的重要技能。
python:Pandas的数据结构:Series,DataFrame
|
JavaScript
【Vue2.0学习】—组件的自定义事件(五十八)
一种组件间通信的方式:适用于子组件—&gt;父组件
|
Dubbo Java 应用服务中间件
Dubbo3实践:基于 IDL 的 Triple 协议 Pojo 序列化兼容模式
这篇教程会通过从零构建一个简单的工程来演示如何基于 POJO 方式使用 Dubbo Triple, 在应用不改变已有接口定义的同时升级到 Triple 协议。**此模式下 Triple 使用方式与 Dubbo 协议一样。** 具体用例可以参考:[dubbo-samples-triple/pojo](https://github.com/apache/dubbo-samples/tree/mast
558 0
|
数据库
使用 scope_identity() 函数获得表的标识值
做开发的时候,我们经常要在执行一条语句后 获得数据库的自增ID值,最典型的例子就是在生成订单后,要返回订单ID,之前有一种不严谨的做法是,用select top 1 ID order by ID desc,值所以不严谨有一种说法是,在高并发用户的情况下,很可能在插入和查询之间又一次进行了插入操作,这样查询的结果就和实际ID不是对应的了。
955 0
|
Python .NET SQL
基于hi-nginx的web开发(python篇)——使用jinja2模板引擎
模板引擎的使用在web开发中是不可避免和必要的。hi.py框架使用jinja2作为模板引擎。 为了使用hi.py提供的jinja2引擎,首先需要引入它: from hi import hi,template 然后就是使用它: 1 @app.
1204 0