资讯专栏INFORMATION COLUMN

摘自<JavaScript语言精粹>经典案例----------持续更新

张迁 / 998人阅读

摘要:定义一个函数它设置一个节点为黄色然后把它渐变成白色不想当厨子的画家不是一个好老师郭德纲根据书上的例子有感而发自己用递归也写了一个类似的使用记忆功能技巧编写斐波那契数列得到的总数原例一普通递归的斐波那契数列共调用了函数多次升级

1.定义一个函数,它设置一个DOM节点为黄色,然后把它渐变成白色
var fade = function (node) {
  var level = 1;
  var step = function () {
    var hex = level.toString(16);
    node.style.backgroundColor = "#FFFF" + hex + hex;
    if(level< 15) {
      level +=1;
      setTimeout(step,100);
    }
  }
  setTimeout(step,100);
}
fade(document.body);
不想当厨子的画家,不是一个好老师------郭德纲
根据书上的例子,有感而发,自己用递归也写了一个类似的
function fade(sum,node) {
  var hex = sum.toString(16);
  if(sum<16) {
    node.style.backgroundColor = "#FFFF"+ hex +hex;
    return setTimeout(function(){
       fade(sum+1,node)
    },200)
  }
}
fade(1,document.body);
2.使用记忆功能技巧,编写斐波那契数列,得到10的总数55
原例一:普通递归的斐波那契数列,共调用了函数450多次
function feibo(n){
  return n < 2 ? n: feibo(n-1) + feibo(n-2);
}
feibo(10);

升级版:使用记忆功能技巧,减少函数调用次数,加速得到运算结果,缩短时间,共调用函数不到30次
function feibo2(n) {
  var memo = [0,1]; // 用于存放每次的运算结果的数组
  var result = memo[n]; // 当前运算结果
  if(typeof result !=="number") { //如果记忆数组里没有,就计算
     result = feibo2(n-1) + feibo2(n-2);
     memo[n] = result;// 把这次结果存放到记忆结果的数组里,下次直接获取,就不用再次计算了
  }
  return result;
}
feibo2(10);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109583.html

相关文章

  • 摘自&lt;css世界&gt;(张鑫旭著)经典案例---------持续更新

    摘要:需求页面某个模块的文字内容是动态的可能是几个字也可能是一句话然后希望文字少的时候居中显示文字超过一行的时候居左显示该如何实现呢核心代码如下需求展开收起带有滑动效果核心代码如下一个足够大的最大高度值需求鼠标移动到文字上方时文字被替 1.需求:页面某个模块的文字内容是动态的,可能是几个字,也可能是一句话.然后,希望文字少的时候居中显示,文字超过一行的时候居左显示.该如何实现呢? /**核心...

    MageekChiu 评论0 收藏0
  • 解读useEvent显著降低Hooks负担的原生Hook

      想要做到就要有更多的学习,你知道为什么React不把他们设为默认方法#useEvent是一个刚刚提案的原生Hook,还处于RFC。现在我们就一起来讨论下  RFC:Request for Comments 提案应用的还十分广泛  我们先看看在没有 useEvent 会出现的情况:  functionChat(){   const[text,setText]=useState(''...

    3403771864 评论0 收藏0
  • &lt;&lt;编写可维护的javascript&gt;&gt; 笔记2(注释)

    摘要:注释是代码中最常见的组成部分它们是另一种形式的文档也是程序员最后才舍得花时间去写的但是对于代码的总体可维护性而言注释是非常重要的一环打开一个没有任何注释的文件就好像趣味冒险但如果给你的时间有限这项任务就变成了折磨适度的添加注释可以解释说明代 注释是代码中最常见的组成部分.它们是另一种形式的文档,也是程序员最后才舍得花时间去写的.但是,对于代码的总体可维护性而言,注释是非常重要的一环.打...

    renweihub 评论0 收藏0
  • 详细解说JavaScript内存管理和GC算法

      JavaScript在创建变量(数组、字符串、对象等)是自动进行了分配内存,而且当它没有被使用的状态下,会自动的释放分配的内容;其实这样基层语言,如C语言,他们提供了内存管理的接口,比如malloc()用于分配所需的内存空间、free()释放之前所分配的内存空间。  释放内存的过程称为垃圾回收,例如avaScript这类高级语言可以提供了内存自动分配和自动回收,其实这个自动储存不会占用太多空间...

    3403771864 评论0 收藏0
  • JavaScript语言精粹》 代码摘录

    摘要:最近在读这本评价颇高的语言精粹,其作者是的创造者,在业界颇有名气。 最近在读这本评价颇高的《JavaScript语言精粹》,其作者Douglas Crockford 是JSON的创造者,在业界颇有名气。以下是阅读过程中认为比较有用的摘录的代码,希望能对各位有所启发 自定义的method方法 Function.prototype.method = function(name,func...

    haitiancoder 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<