javasavacript 递归优化,递归变while
来源:互联网 发布:软件高级工程师待遇 编辑:程序博客网 时间:2024/06/08 18:46
javascript优化无止境,突发奇想把递归变成while,没想到还真有性能上的提升,只是我不明白其中的原理是什么,如果有那位大神知道,还请指导。说一下思路:在一般树状数据结构中,插入和删除往往都用到递归,如果在插入数据时,只是改变插入数据时的作用域,我们就把递归省去了,好了,贴代码:
var t = ( //一个节点类,用闭包创建 function(){ function t(id){ var s =this; s.id= id ; s.node =[];//记录子节点 } t.prototype.insert = function(node){//插入函数 var s =this; while(s.node[0] !== undefined)//判断是否有子节点 { s = s.node[0];//改变作用域 } s.node.push(node);//没有子节点,退出循环,添加子节点 return; }; return t })();var sta=Date.now();var b = new t(0);//new一个根节点for(var i = 0;i<10000;i++)//插入一万个子节点{ var c = new t(i+1); b.insert(c);}console.log(Date.now()-sta);
谷歌浏览器中递归调用时间大约是1080~1334;而改变作用域时间是640~1189;而且改变作用域时间多集中在1000以下;
if(s.node[0] !== undefined)//判断是否有子节点 { s = s.node[0].insert(node);//递归 }
这是递归调用;
0 0
- javasavacript 递归优化,递归变while
- 递归优化
- 递归优化
- 递归优化之尾递归
- 递归及尾递归优化
- 递归及尾递归优化
- 递归优化之尾递归
- Python 尾递归优化
- 尾递归优化
- 尾递归优化【-O2】
- 台阶问题递归优化
- 递归函数优化(笔记)
- 优化递归的效率
- 【Scala】尾递归优化
- 尾递归优化
- 递归删除-优化
- 尾递归优化
- 尾递归优化
- 第二次作业(c语言)
- Git的常用命令
- Android图片的时分秒倒计时
- 绘制B样条曲线
- hdu 5412 CRB and Queries(动态求区间第k小+整体二分)
- javasavacript 递归优化,递归变while
- STL算法_基本算法篇
- POJ 1009--Edge Detection
- 不同Json api生成json数据格式的区别
- C经典 关于一维数组指针
- HDU-4712-Hamming Distance(水随机数)
- hdu 5289 Assignment(尺取)
- VB.NET版机房收费系统之组合查询
- 对称平方数