美文网首页
js 递归 (面试题)

js 递归 (面试题)

作者: 洪锦一 | 来源:发表于2021-10-13 09:23 被阅读0次

一、1×2×3×4×5......×n 阶乘

function fn(n) {
    if (n == 1) {
        return 1;
    }
    return n * fn(n - 1)
}
console.log(fn(5));

执行步骤:

//return 5 * fn(4)
//return 5 * (4 * fn(3))
//return 5 * (4 * (3 * fn(2)))
//return 5 * (4 * (3 * (2 * fn(1))))
//return 5 * (4 * (3 * (2 * 1)))
---------------------------------------------------------------
//return 5 * fn(4)
//return 5 * 4 * fn(3)
//return 5 * 4 * 3 * fn(2)
//return 5 * 4 * 3 * 2 * fn(1)
//return 5 * 4 * 3 * 2 * 1

二、斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21......

用户输入一个数字n就可以求出 这个数字对应的兔子序列值
我们只需要知道用户输入的n 的前面两项(n-1 n-2)就可以计算出n 对应的序列值

function funn(n) {
      if (n == 1 || n == 2) {
          return 1;
      }
      return funn(n - 1) + funn(n - 2);
}
console.log(funn(6));

执行步骤:

return funn(5) + funn(4) 
return funn(4) + funn(3) + funn(3) + funn(2)
return funn(3) + funn(2) + funn(2) + funn(1) + funn(2) + funn(1) + funn(2)
return funn(2) + funn(1) + 1 + 1 + 1 + 1 + 1 + 1
return 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
return 8

三、递归遍历商品列表

要求输入id 返回数据对象

数据对象

var data = [
    {
        id: 1,
        name: '家电',
        goods: [
            {
                id: 11,
                gname: '冰箱',
                goods: [
                    {
                        id: 111,
                        gname: '海尔冰箱'
                    },
                    {
                        id: 112,
                        gname: '小天鹅冰箱'
                    },
                ]
            },
            {
                id: 12,
                gname: '洗衣机'
            }]
    },
    {
        id: 2,
        name: '服饰'
    }
]

用foreach 遍历每一个对象

function getID(json, id) {
    var o = {};
    json.forEach(function (item) {
        if (item.id == id) {
            //console.log(item);
            o = item;
            //2.获取里层数据  可以利用递归函数 
            //里面应该有goods这个数组 并且长度不为0
        } else if (item.goods && item.goods.length > 0) {
            o = getID(item.goods, id)
        }
    })
    return o;
}
console.log(getID(data, 112));

相关文章

  • js 递归 (面试题)

    一、1×2×3×4×5......×n 阶乘 执行步骤: 二、斐波那契数列(兔子序列) 1、1、2、3、5、...

  • 树形结构递归/原生js实现/vue递归组件

    原生js实现递归渲染 Vue2.0递归组件

  • js基础面试题

    面试题:延迟加载JS有哪些方式? 面试题:JS数据类型有哪些? 面试题:JS数据类型考题 考题一: 考题二: 面试...

  • 24. Swap Nodes in Pairs

    阿里的面试题目: 递归的做法,他们都是天才

  • js获取深层次属性

    方式一:通过递归 参考下面文章后js获取深层次属性,一道很经典的面试题,在此基础上通过替换[]为.来兼容有[]的情...

  • 前端相关大杂烩

    前端基础面试题(JS部分) 前端基础面试题(JS部分)学习 React.js 比你想象的要简单 原文地址:Lear...

  • 数组和算法—递归

    递归 1.什么叫做递归 答:当前函数自己调用自己,要理解递归,废话不多说,直接看一道面试题需求:求1~100之间,...

  • 组件递归 & js递归

    一、el-tree实现原理—组件递归 举一个栗子: 1、组件引入,并调用。组件name为“func-table” ...

  • js递归

    递归 何为递归 递归,就是在运行的过程中调用自己,一般情况下多为函数自己调用自己。 构成递归需具备的条件 子问题须...

  • js递归

    递归 递归的概念在程序中函数直接或间接调用自己直接调用自己简介调用自己跳出结构,有了跳出才有结果思想递归的调用,最...

网友评论

      本文标题:js 递归 (面试题)

      本文链接:https://www.haomeiwen.com/subject/gvssoltx.html