Heim > Fragen und Antworten > Hauptteil
Es ist schwer zu verstehen. Haben Sie Vorschläge?
我想大声告诉你2017-07-05 10:53:50
要想学会递归,首先要学会递归。
递归就是包子馅的包子,极限是馒头。
给出一个正常的代码示例:
假设我们想要遍历一个【嵌套的】数据结构,如【DOM 元素的 children 属性还是同类型的 DOM 元素】,这时就会使用到最简单而常见的递归:函数调用自己,一层层解开嵌套,这只需要一两行 JS 即可实现:
function walk (node) {
// 先打印出本节点的值
console.log(node.value)
// 对每个 child 调用自身
node.children.forEach(child => walk(chid))
}
// 简单的树形嵌套数据结构示例
const tree = {
value: 1,
children: [
{ value: 2, children: [] },
{ value: 3, children: [{ value: 4, chilren: [] }] },
{ value: 5, children: [] }
]
}
// 遍历该树形数据结构
walk(tree)
三叔2017-07-05 10:53:50
递归其实不难理解,我举个例子,6层高的楼,只有一层有苹果,我们在任何一层找到苹果,都会停止。。查找一次都会出现2个结果,做判断需要不需要往下找,往下找就是重复第一个过程,这就是递归。
天蓬老师2017-07-05 10:53:50
int i;
int function a(i){
if (i < 2) return a(i+1);
else return i;
}
a(0); //执行后返回2
上面代码便于理解没写标准,递归就是调用自己形成嵌套.
因为只有一个return语句,所以调用a(0)后我们可以这样看:
嵌套进去:
a(0)->a(a(0+1))->a(a(1))
a(a(a(1+1)))->a(a(a(2)))
在回来:
a(a(a(2)))->a(a(2))
a(a(2))->a(2)
a(2)->2