• JavaScript面向对象学习递归(三)


    ⭐️⭐️⭐️  作者:船长在船上
    🚩🚩🚩  主页:来访地址船长在船上的博客

    🔨🔨🔨  简介:资深前端开发工程师,专注前端开发,欢迎咨询交流,共同学习

    🔔🔔🔔感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好,在这里博主不胜感激!!!

    如有疑问可以留言、评论,看到后会及时回复。  

     

     

    目录

    什么是递归函数

    利用递归求1~n的阶乘 

    利用递归函数求斐波那契数列

    利用递归遍历数据


     

    什么是递归函数

    递归函数 : 函数内部自己调用自己, 这个函数就是递归函数

    var num = 1;

            function fn() {
                console.log('我要打印6句话');

                if (num == 6) {
                    return; // 递归里面必须加退出条件
                }
                num++;
                fn();
            }
            fn();

     

    输出结果:

     

    利用递归求1~n的阶乘 

    1. // 利用递归函数求1~n的阶乘 1 * 2 * 3 * 4 * ..n
    2. function fn(n) {
    3. if (n == 1) {
    4. return 1;
    5. }
    6. return n * fn(n - 1);
    7. }
    8. console.log(fn(3));//6
    9. console.log(fn(4));//24

     

    利用递归函数求斐波那契数列

    1. // 利用递归函数求斐波那契数列1、1、2、3、5、8、13、21...
    2. // 用户输入一个数字 n 就可以求出 这个数字对应的兔子序列值
    3. // 我们只需要知道用户输入的n 的前面两项(n-1 n-2)就可以计算出n 对应的序列值
    4. function fb(n) {
    5. if (n === 1 || n === 2) {
    6. return 1;
    7. }
    8. return fb(n - 1) + fb(n - 2);
    9. }
    10. console.log(fb(3));//2
    11. console.log(fb(6));//8

    利用递归遍历数据

    1. var data = [{
    2. id: 1,
    3. name: '家电',
    4. goods: [{
    5. id: 11,
    6. gname: '冰箱',
    7. goods: [{
    8. id: 111,
    9. gname: '海尔'
    10. }, {
    11. id: 112,
    12. gname: '美的'
    13. }]
    14. }, {
    15. id: 12,
    16. gname: '洗衣机'
    17. }]
    18. }, {
    19. id: 2,
    20. name: '服饰'
    21. }];
    22. // 想要做输入id号,就可以返回的数据对象
    23. // 1. 利用 forEach 去遍历里面的每一个对象
    24. function getID(json, id) {
    25. var o = {};
    26. json.forEach(function(item) {
    27. // console.log(item); // 2个数组元素
    28. if (item.id == id) {
    29. // console.log(item);
    30. o = item;
    31. // 2. 想要得里层的数据 11 12 可以利用递归函数
    32. // 里面应该有goods这个数组并且数组的长度不为 0
    33. } else if (item.goods && item.goods.length > 0) {
    34. o = getID(item.goods, id);
    35. }
    36. });
    37. return o;
    38. }
    39. console.log(getID(data, 1));
    40. console.log(getID(data, 2));
    41. console.log(getID(data, 11));
    42. console.log(getID(data, 12));
    43. console.log(getID(data, 111));

    输出结果:

    👉👉👉 欢迎来访船长在船上的博客,如有疑问可以留言、评论,看到后会及时回复。  

  • 相关阅读:
    JDK21更新内容:增强模式匹配
    VSCode中配置C/C++环境
    使用FCEUX调试器寻找并修改游戏初始物品
    WebSocket 的 6 种集成方式
    Flutter粒子生成演示
    怎么把两首歌曲拼接在一起?
    面试官:说说EventLoop事件循环、微任务、宏任务
    针对CSP-J/S的每日一练:Day 8
    《数据结构与算法》-双链表的增删查改,链表与顺序表的区别
    【算法作业】实验二:给立方体排序的小明&&同时整除的数
  • 原文地址:https://blog.csdn.net/SmartJunTao/article/details/126245921