博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现阶乘和裴波那契数列的几种方式(闭包、递归)
阅读量:6901 次
发布时间:2019-06-27

本文共 1654 字,大约阅读时间需要 5 分钟。

hot3.png

一、 阶乘

  1. 闭包实现阶乘,由于内部arr存储了结果,效率会更高
var fn = (function () {        var arr = [1, 1, 2]; // 第0位是占位,从第一位开始算起        return function (n) {            var res = arr[n]; // 因为内部引用了arr,并返回,导致arr一直在内存中            if (res) {                return res;            } else {                arr[n] = n * fn(n-1);                return arr[n];            }        }    })();
  1. 递归实现阶乘
function fn(n) {        if (n == 1) {            return 1;        }else if (n == 2) {            return 2;        }        return n * fn (n-1);    }
  1. 递推实现阶乘
function fn1(n) {        var x = 1,            z = 1;        if (n == 1) {            return 1;        }else if (n==2) {            return 2;        }else {            for (var i = 0; i < n; i++) {                z = z * x;                x = ++x;            }        }        return z;    }

二、实现裴波那契

  1. 闭包实现裴波那契数列
var fn = (function () {        var arr = [0, 1, 1]; // 第0位是占位,从第一位开始算起        return function (n) {            var res = arr[n]; // 因为内部引用了arr,并返回,导致arr一直在内存中            if (res) {                return res;            } else {                arr[n] = fn(n-1) + fn(n-2);                return arr[n];            }        }    })();
  1. 递归实现裴波那契
function fn(n) {        if (n == 1 || n==2) {            return 1;        }        return fn(n-1) + fn (n-2);    }
  1. 递推法实现裴波那契
function fn1(n) {        var x = 1,            y = 1,            z = 0;        if (n == 1 || n == 2) {            return 1;        }else {            for (var i = 2; i < n; i++) {                z = x + y;                x = y;                y = z;            }                    }        return z;    }

转载于:https://my.oschina.net/u/3150903/blog/1863486

你可能感兴趣的文章
Oracle计算时间差常用函数
查看>>
外链的理解
查看>>
机器学习:选对时机直线超车
查看>>
Java基础基本常识
查看>>
谈谈Python实战数据可视化之matplotlib模块(实战篇)
查看>>
2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理
查看>>
Java程序员需要技术能力达到什么程度,才能拿到月薪30k?
查看>>
Java之品优购课程讲义_day14(5)
查看>>
Jenkins 持续集成使用教程
查看>>
MongoDB复制集
查看>>
oracle sql
查看>>
强制弹出页面代码(以及自动最小化功能)
查看>>
关于Centos7无法连接网络,安装tree命令及修改ONBOOT选项后退出的程序!
查看>>
VRRP单备份配置
查看>>
好程序员学习笔记:函数
查看>>
如何打造工业物联网帝国?
查看>>
Linux系统安全之grub密码和用户权限
查看>>
超人学院Hadoop大数据资源分享
查看>>
C# 压缩PDF图片
查看>>
mouseover事件mouseenter事件
查看>>