JavaScript 有意思的函数

(1)看一个关于阶乘的函数
为了提高计算效率,我们可以利用函数自身属性来缓存每次阶乘的结果。

// 计算阶乘,并将结果缓存到函数的属性中
var count = 0;
function factorial(n){
    //确保1 这种情况存在
    factorial[1] = 1;
    // 有限的整数
    if(isFinite(n) && n>0 && n==Math.round(n))  
    {   // 如果没有缓存结果
        if(!(n in factorial)){
            // 计算结果并缓存
            factorial[n] = n * factorial(n-1);
        }
        // 返回缓存结果
        return factorial[n];
    }else{
        return NaN;
    }
}
//我们来验证一下
factorial(4);     //==>24
// 4 以及 4 之前的阶乘值都缓存了下来
factorial[1];     //==> 1
factorial[3];    //==> 6
factorial[5];    //==>undefined
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 1.函数参数的默认值 (1).基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
    赵然228阅读 707评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 本文档内容参考 《JavaScript 闯关记》之函数 函数是一段代码,它只定义一次,但可以被执行或调用任意次。在...
    穿越人海遇见你阅读 1,017评论 0 1
  • 现在是1.26的5:58,我搭乘上了Z223开始了一个人的西藏之旅。 至于问我为什么,没有理由、没有答案,只是突然...
    啊Ben阅读 295评论 2 4