js斐波那契数列

  斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89......

  这个数列从第3项开始,每一项都等于前两项之和。

1.递归算法:

    function fib(n) {
        if (n < 2) {
            return n;
        }else {
            return fib(n-1) + fib(n-2);
        }
    }

2.动态规划算法

    function fib(n) {
        var val = [];
        for (var i = 0; i <= n; ++i) {
            val[i] = 0;
        }
        if (n == 1 || n == 2) {
            return 1;
        }else {
            val[1] = 1;
            val[2] = 2;
            for (var i = 3; i <= n; ++i) {
                val[i] = val[i-1] + val[i-2];
            }
        return val[n-1];
        }
    }

动态规划需要用到数组的原因是因为动态规划算法通常需要将中间结果保存起来。当计算fib(20)及更大的数字时,动态规划的解决方案比递归的解决方案更高效。

3.迭代法

    function fib(n) {
        var last = 1;
        var nextLast = 1;
        var result = 1;
        for (var i = 2; i < n; ++i) {
            result = last + nextLast;
            nextLast = last;
            last = result;
        }
        return result;
    }
时间: 2024-10-29 05:05:16

js斐波那契数列的相关文章

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

对于JS初学者来说,斐波那契数列一直是个头疼的问题,总是理不清思路. 希望看完这篇文章之后会对你有帮助. 什么是斐波那契数列 : 答: 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列".  指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.-- 题目:有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面.已知一对兔子每个月可以生一对小兔子,而一对

JS斐波拉契数列

斐波拉契数列又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.......... 规律:1+1=2,1+2=3,2+3=5,3+5=8.......... <script> function fab ( n ) { if ( n == 1 || n == 2 ) { return 1; }else { return fab( n - 1 ) + fab( n - 2 ); } } alert(fab( 6 ));//弹出第六位斐波拉契数 &l

js 斐波那契数列实现

1.递归 function fib(n){ if(n==1||n==2){ return 1; } return fbnq(n-1)+fbnq(n-2); } fbnq(10); //55 2.非递归 var res=[1,1]; function fb(n){ for(var i=2;i<n;i++){ res[i] = res[i-1] + res[i-2]; } } fb(10); console.log(res); //[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

js斐波那契数列求和

一.递归算法 function recurFib(n) { if (n < 2) { return n; } else { return recurFib(n-1) + recurFib(n-2); } } alert(recurFib(10));//将显示55 二.动态规划法 function dynFib(n) { var val = []; for (var i = 0; i <= n; ++i) { val[i] = 0; } if (n == 1 || n == 2) { retur

斐波那契数列公式算法-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

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

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

Tips_of_JS 之 利用JS实现水仙花数的寻找与实现斐波那契数列

一.水仙花数 1.啥是水仙花数? 水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 2.利用JS实现对水仙花数的寻找. 这一次我们寻找水仙花数的方法,是JS中非常基础的while循环.代码如下: si不si很神奇~ 二.斐波那契数列 1.啥是斐波那契数列? 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔

js 生成斐波那契数列

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>fibonacci</title> </head> <body> <script> // end 多少数以内 function fibonacci(end) { var num1 = 0; var num2 = 1; va

JS写斐波那契数列第n项

斐波那契数列:1 1 2 3 5 8 13 21 34 ... 数列特点:f(n)=f(n–1)+f(n–2)  后一项等于前两项之和 var a=0: var b=1: var c: var n=2://第n项 for(var i=0:i<n:i++){ c=b: b=a+b: a=c: } console.log(b)://打印第n项