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://segmentfault.com/a/1190000019210777
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。