JavaScript算法系列之-----------------斐波那契数列(JS实现)

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

n<=39

递归实现:

function Fibonacci(n){
      if(n<0){
            return -1;
      }
      if(n===0){
            return 0;
      }
      if(n===1){
            retunr 1;
      }
      if(n>1){
             return Fibonacci(n-1)+Fibonacci(n-2);
      }
}

递归实现效率较低,未能编译通过。

正常实现:

function Fibonacci(n){
    if(n<=1){
        return n;
    }else{
        var pre = 0;
        var cur = 1;
        for(var i=2;i<=n;i++){
            cur = pre + cur;
            pre = cur - pre;
        }
        return cur
    }
}

原文地址:https://www.cnblogs.com/manru75/p/10440948.html

时间: 2024-07-31 15:32:43

JavaScript算法系列之-----------------斐波那契数列(JS实现)的相关文章

算法——动态规划篇——斐波那契数列

斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了<斐波纳契数列>季刊,专门刊载这方面的研究成果. 以上内容来自百度百科.. 今天主要是想用动态规划的思想求解斐波那契数列,用来观察动态规划带来的优势,空间换时间,不重复求解

剑指offer系列——7.斐波拉契数列

Q:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 C:时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M A:最简单的就是递归-- int Fibonacci(int n) { if (n == 1 || n == 2) return 1; else if (n == 0) return 0; else { return Fibonacci(n - 1) + Fibonacci(n - 2);

16、【常见算法】查找斐波那契数列的第N项

问题:手写一个函数,用于查找斐波那契数列的第N项目 1 /* 2 查找斐波那契数列的第N个数 3 */ 4 #include <iostream> 5 6 using namespace std; 7 8 int Find(int n) 9 { 10 int a, b; 11 a = 0; 12 b = 1; 13 14 15 for(int i = 1; i < n; i++) 16 { 17 int c = a + b; 18 a = b; 19 b = c; 20 } 21 ret

Java与算法之(3) - 斐波那契数列

斐波那契数列问题:如果一对兔子每月能生1对小兔子,而每对小兔在它出生后的第三个月里,又能开始生1对小兔子,假定在不发生死亡的情况下,由一对初生的兔子开始,1年后能繁殖出多少对兔子? 首先手工计算来总结规律,如下表注意总数这一列 1+1=2 1+2=3 2+3=5 3+5=8 5+8=13 可以得出规律,第n个斐波那契数=第n-1个斐波那契数+第n-2个斐波那契数 为了计算n,必须计算n-1和n-2:为了计算n-1,必须计算n-2和n-3:直到n-x的值为1为止,这显示是递归大显身手的地方.来看代

算法题4 斐波那契数列

题目: Fibonacci数列定义如下: 输入n,求f(n) 分析: 在剑指offer上有个O(logn)的算法,本文只做O(n)算法的分析.这其实是一个简单的动态规划问题,问题的结果跟子问题的结果相关,关系式已经给出了,计算中需要保存子问题的结果 跳台阶问题:一个台阶一共有n阶,一次起跳可以跳一阶,也可以跳二阶.问总共有多少中跳法,并对时间复杂度进行分析.该问题也是典型的Fibonacci数列问题,第一次跳1个台阶,接下来有f(n-1)中跳法,第一次跳2个台阶,则接下来有f(n-2)个跳法.

算法导论-求(Fibonacci)斐波那契数列算法对比

目录 1.斐波那契数列(Fibonacci)介绍 2.朴素递归算法(Naive recursive algorithm) 3.朴素递归平方算法(Naive recursive squaring) 4 .自底向上算法(Bottom-up) 5. 递归平方算法(Recursive squaring) 6.完整代码(c++) 7.参考资料 内容 1.斐波那契数列(Fibonacci)介绍 Fibonacci数列应该也算是耳熟能详,它的递归定义如上图所示. 下面2-6分别说明求取Fibonacci数列的

以计算斐波那契数列为例说说动态规划算法(Dynamic Programming Algorithm Overlapping subproblems Optimal substructure Memoization Tabulation)

动态规划(Dynamic Programming)是求解决策过程(decision process)最优化的数学方法.它的名字和动态没有关系,是Richard Bellman为了唬人而取的. 动态规划主要用于解决包含重叠子问题的最优化问题,其基本策略是将原问题分解为相似的子问题,通过求解并保存重复子问题的解,然后逐步合并成为原问题的解.动态规划的关键是用记忆法储存重复问题的答案,避免重复求解,以空间换取时间. 用动态规划解决的经典问题有:最短路径(shortest path),0-1背包问题(K

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

斐波那契数列公式算法-JS实现

之前算斐波那契数列都是算前两个数相加实现的 比如0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368 2=1+1 3=1+2 5=2+3 8=3+5 …… 其实还有另外一个规律: 2 = 1*2-03 = 2*2-15 = 3*2-18 = 5*2-213= 8*2-321=13*2-5 …… 下面是JS实现的代码: <!DOCTYPE h