84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
感觉难以理解,有好多建议吗?
看看我之前对一个递归问题的回答. 函数的实现功能方面理解递归不知道对你有没有帮助.
简单的理解就是:函数调用自身。
自身
合格的递归要有结束条件。
结束条件
明白这2点,就OK了。
要想学会递归,首先要学会递归。
递归就是包子馅的包子,极限是馒头。
给出一个正常的代码示例:
假设我们想要遍历一个【嵌套的】数据结构,如【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)
递归其实不难理解,我举个例子,6层高的楼,只有一层有苹果,我们在任何一层找到苹果,都会停止。。查找一次都会出现2个结果,做判断需要不需要往下找,往下找就是重复第一个过程,这就是递归。
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
一个老司机的经验:多练多悟
看看我之前对一个递归问题的回答. 函数的实现功能方面理解递归
不知道对你有没有帮助.
简单的理解就是:函数调用
自身
。合格的递归要有
结束条件
。明白这2点,就OK了。
要想学会递归,首先要学会递归。
递归就是包子馅的包子,极限是馒头。
给出一个正常的代码示例:
假设我们想要遍历一个【嵌套的】数据结构,如【DOM 元素的 children 属性还是同类型的 DOM 元素】,这时就会使用到最简单而常见的递归:函数调用自己,一层层解开嵌套,这只需要一两行 JS 即可实现:
递归其实不难理解,我举个例子,6层高的楼,只有一层有苹果,我们在任何一层找到苹果,都会停止。。查找一次都会出现2个结果,做判断需要不需要往下找,往下找就是重复第一个过程,这就是递归。
上面代码便于理解没写标准,递归就是调用自己形成嵌套.
因为只有一个return语句,所以调用a(0)后我们可以这样看:
嵌套进去:
在回来:
一个老司机的经验:多练多悟