zoukankan      html  css  js  c++  java
  • 递归组件的小心得

    0. 递归与迭代

    1. 递归

    我调我自己,那就是递归。
    没有结束条件就是无穷地递归下去,会造成堆栈溢出。

    2. 迭代

    迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。

    3. 对比

    递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。

    举个例子吧:你要给某个小孩子买玩具。
    递归:你自己不太了解小孩子的需求,为了缩小范围,让你的儿子去给孙子挑选。儿子比你强点有限,但依然不太了解小孩子的需求。为了缩小范围,你又让你孙子去挑选。如此这般,直到找到合适的玩具。
    迭代:你挑了一件觉得不行,又挑了一件又不行。如此这般,直到找到合适的玩具。
    所以一句话:递归是自己调用自己,每次旨在缩小问题规模。迭代是自己执行很多次,每次旨在更接近目标。

    迭代是逐渐逼近,用新值覆盖旧值,直到满足条件后结束,不保存中间值,空间利用率高。
    递归是将一个问题分解为若干相对小一点的问题,遇到递归出口再原路返回,因此必须保存相关的中间值,这些中间值压入栈保存,问题规模较大时会占用大量内存。

    1. 递归组件

    父组件
    // RecursionCom.vue

    <template>
      <div>
        <child-component :count="count" />
      </div>
    </template>
    
    <script>
    import childComponent from "./childComponent.vue";
    export default {
      name: "recursionCom",
      components: {
        childComponent
      },
      data() {
        return {
          count: 1,
        };
      },
    };
    </script>
    
    

    子组件
    // childComponent.vue

    <template>
      <div class="child">
        <child-component :count="count + 1" v-if="count < 3"></child-component>
      </div>
    </template>
    
    <script>
    export default {
      name: "child-component",
      props: ["count"],
      mounted(){
        console.log('c',this.count);
      }
    };
    </script>
    

    控制台打印信息

    image

    人生到处知何似,应似飞鸿踏雪泥。
  • 相关阅读:
    第二十三篇 jQuery 学习5 添加元素
    第二十二篇 jQuery 学习4 内容和属性
    第二十一篇 jQuery 学习3 特效效果
    第二十篇 jQuery 初步学习2
    第十九篇 jQuery初步学习
    第十八篇 JS传参数
    第十七篇 JS验证form表单
    第十六篇 JS实现全选操作
    第十五篇 JS 移入移出事件 模拟一个二级菜单
    第十四篇 JS实现加减乘除 正则表达式
  • 原文地址:https://www.cnblogs.com/lepanyou/p/15562828.html
Copyright © 2011-2022 走看看