We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
程序员不止眼前的逻辑和代码,还有底层的框架与架构。
最近在做一个复杂表格设计数据格式设置,其中用到了多叉树的原理,所以要用到递归来实现数据格式化。
**注意:**使用递归函数一定要注意,处理不当就会进入死循环。递归函数只有在特定的情况下使用 ,比如阶乘问题。
function fact(num) { if (num <= 1) { return 1; } else { return num * fact(num - 1); } } fact(3) // 结果为 6
以下代码可导致出错:
var anotherFact = fact; fact = null; alert(antherFact(4)); //出错
由于fact已经不是函数了,所以出错。
使用arguments.callee arguments.callee 是一个指向正在执行的函数的指针,arguments.callee 返回正在被执行的对现象。 新的函数为:
function fact(num){ if (num<=1){ return 1; }else{ return num*arguments.callee(num-1); //此处更改了。 } } var anotherFact = fact; fact = null; alert(antherFact(4)); //结果为24.
先看图 数据结构格式,参考如下代码:
headerData: { name: '总数据', children: [ { name: '数据1', children: [ { name: '数据11', children: [ { name: '数据111', }, { name: '数据112', } ] }, { name: '数据12', children: [ { name: '数据121', }, { name: '数据122', } ] }, { name: '数据13', children: [ { name: '数据131', }, { name: '数据132', } ] }, { name: '数据14', }, ] } ] }
叶子结点 就是度为0的结点 就是没有孩子结点的结点 简单的说就是一个二叉树任意一个分支上的终端节点 我们如何获取节点的所有叶子节点个数呢? 递归代码如下:
/** * 获取 节点的所有 叶子节点 个数 * @param {Object} json Object对象 */ function getLeafCountTree(json) { if(!json.children){ return 1; }else{ var leafCount = 0; for(var i = 0 ; i < json.children.length ; i++){ leafCount = leafCount + getLeafCountTree(json.children[i]); } return leafCount; } }
#最后
递归遍历是比较常用的方法,比如:省市区遍历成树、多叉树、阶乘等。 希望本文对你有点帮助。
The text was updated successfully, but these errors were encountered:
biaochenxuying
No branches or pull requests
最近在做一个复杂表格设计数据格式设置,其中用到了多叉树的原理,所以要用到递归来实现数据格式化。
在程序中函数直接或间接调用自己
**注意:**使用递归函数一定要注意,处理不当就会进入死循环。递归函数只有在特定的情况下使用 ,比如阶乘问题。
1. 一个阶乘的例子:
以下代码可导致出错:
由于fact已经不是函数了,所以出错。
使用arguments.callee
arguments.callee 是一个指向正在执行的函数的指针,arguments.callee 返回正在被执行的对现象。
新的函数为:
2.再看一个多叉树的例子:
先看图
数据结构格式,参考如下代码:
叶子结点 就是度为0的结点 就是没有孩子结点的结点
简单的说就是一个二叉树任意一个分支上的终端节点
我们如何获取节点的所有叶子节点个数呢? 递归代码如下:
#最后
递归遍历是比较常用的方法,比如:省市区遍历成树、多叉树、阶乘等。
希望本文对你有点帮助。
The text was updated successfully, but these errors were encountered: