0
点赞
收藏
分享

微信扫一扫

初识递归学习

晒大太阳了 2022-04-19 阅读 74
算法
  1. 发现很多人都觉得递归很简单,让我不太理解。递归还是很难的,对于前端来说能掌握树的查询也就够了。在算法中可以解决很多问题。
    先来几个递归的遇到的场景
      
         let obj = {
            name: "zs",
            age: 18,
            children: {
                like: '网球',
                children: {
                    gender: '男'
                }
            }
        }

        let fn = (obj, num = 0) => {
            if (Object.prototype.toString.call(obj) === "[object Object]") {
                num += Object.values(obj).length
                if (obj.children) {
                    num = fn(obj.children, num-1)
                }
            }
            return num
        }
        console.log(fn(obj));

 		let num = 3
        let fn = (n, count = 0) => {
            if (n > 0) {
                n -= 1
                count += n
                count = fn(n, ++count)
            }
            return count
        }
        console.log(fn(num));

上面代码第一个是自己遇到类似的吧, 第二个是自己验证所写的。
如果有兴趣的可以自己在控制台中查看执行的过程。

递归的原理就是 栈 先进后出的

下面代码的这个事例就是最好的展示了
下面的这段代码的执行顺序 5x4x3x2x1 如果有人是这样想的话,可以看下栈的进出顺序了。
下面的代码过程是 1x2x3x4x5

在这里插入图片描述

		let fn = (n)=> {
            if(n<=0)  return
            if(n === 1 ) return 1
            return n * fn(n-1)
        }
        console.log(fn(5));
举报

相关推荐

0 条评论