vue组件递归相关知识
-
【业务实例】vue组件递归及其应用递归简介 含义:程序调用自身的编程技巧称为递归,那组件调用自身就是组件递归 应用场景:在实际业务开发中,通常应用于菜单栏、树组件、多级下拉框等 vue实现组件递归 调用效果及代码 <!-- * @Date: 2020-12-09 17:52:54 * @Author: surewinT 840325271@qq.com * @LastEditTime: 2022-05-10 14:14:15 * @LastEditors: surewinT 840325271@qq.com * @Description: 调用页面 --> <template> <div class=""> <div v-for="(item, index) in testList" :key="inde
-
Vue3递归组件本文简介 点赞 + 关注 + 收藏 = 学会了 <br> 在日常 Vue 项目中,大概率会用组件库辅助开发,所以 递归组件 的出镜率可能不会非常高。但这并不代表 递归组件 不重要。 本文用10分钟左右的时间让你掌握 递归组件 的用法。 在此之前,你必须掌握:html + css + js + Vue3 基础用法,至少需要知道 Vue 组件 是什么。 <br> <br> 用法讲解 在讲解 递归组件 之前,我们需要先了解几个概念。 <br> 什么是递归? 递归在百度百科里的定义是: 程序调用自身的编程
-
Vue一个案例引发的递归组件的使用今天我们继续使用 Vue 的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的《Vue一个案例引发的动态组件与全局事件绑定总结》 之后,今天来聊一聊我们如何在项目中使用递归组件。 信息的分类展示列表 这次我们主要是实现一个信息的分类展示列表存在二级/三级的分类,如下如所示: 看到这个很多人会想到这个实现起来很简单啊,来个嵌套循环不就完事了。 对,你说的没错,事实就是这样简单。那么就先来看看这么简单的列表怎么实现的,然后这个方案的劣势在
-
聊一聊VUE组件间的数据传递众所周知,Vue 是基于组件来构建 web 应用的。组件将模块和组合发挥到了极致。Vue 是虽说吸取了 AngularJs 的 MVVM的思想,但是它是单向数据流的,也就是说子组件无法直接改变父组件状态。下面总结出常用的组件消息传递的方式。 父组件向子组件传递数据 该方式的数据传递是遵循 Vue 单向数据流的规则的,因此使用起来十分的自然。若父组件的数据改变子组件的 UI 展现也随之变化。 Parent.vue <template> <div> <h1>Parent</h1> <child :name="childName" /> <button @clic
vue组件递归相关课程
vue组件递归相关教程
- 4.1 递归终止条件 按照之前的说明,递归应该是有去有回的,这样递归就必须有一个明确的分界点,递归可以在什么时候结束。程序一旦达到这个临界点,就不用继续递归重复下去了。简单来说,递归的终止条件就是为了防止出现无限递归的情况。
- 3. 递归穷举 我们来看 leetcode 的第 15 题:三数之和。该题的难度为中等,题目内容如下:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。**注意:**答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]我们今天并不打算通过这道题的题解,因为这道题用递归算法是无法通过题解的,原因和之前一样,算法的时间复杂度高,最后会超出时间限制。另外我们去掉后面的注意部分事项,允许答案包含重复的三元组,我们使用递归算法相当于穷举出所有可能的情况,判断三元组的值是否能为 0。首先继续我们的解题三部曲:函数定义,输入和输出:def three_sum(nums, target, count): """ 输入: num: 输入的数组 target: 目标值 count: 在数组中找到几个数之和满足target 输出: []或者[[1,2,3], [-1,4,3]] 这样的满足条件的全部结果 """ res = [] # ... return res注意: 定义这样的递归函数是经过思考的,因为后续递归调用时需要依赖目标值 (target) 或元素个数 (count) 这样两个参数。返回的参数要么为空,要么是所有找到的满足条件的三元组的集合。接下来是递归方法的终止条件,首先考虑以下几个终止条件:如果输入的 nums 列表为空,那么直接返回 [];如果输入的 count 等于1,就要开始判断了,因为这个时候只需要判断 target 是否在列表中存在即可;综上,我们写出终止条件的代码:def three_sum(nums, target, count): """ 输入: num: 输入的数组 target: 目标值 count: 在数组中找到几个数之和满足target 输出: []或者[[1,2,3], [-1,4,3]] 这样的满足条件的全部结果 """ res = [] ###################### 终止条件 ###################################### if not nums: return res if count == 1 and target in nums: return [[ target ]] elif count == 1 and target not in nums: # count等于1时,如果target没有出现在剩余的nums中,说明不存在满足条件的数组元素 return res ####################################################################### # 返回值 return res接下来最重要的,就是递归的公式了,递归的方向一定要朝着减小目标函数规模进行。很明显,我们的递归应该是这样子:以 nums 的第一个元素为递归点,整个 nums 列表中和为 target 的 count 个元素的结果可以分为包含 nums[0] 和不包含 nums[0] 的结果组成,简单点说就是:如果包含 nums[0],那么接下来的 nums[1:] 列表中我们就要找值为 target - nums[0] 的 count - 1 个元素,也即 three_sum(nums[1:], target - nums[0], count -1),然后我们还需要在得到的元组集中的最前面位置加上 nums[0];如果不包含 nums[0],那么就是在 nums[1:] 列表中找值为 target 的 count 个元素,用递归函数表示就是 three_sum(nums[1:], target, count);这样找到的结果正是 count 个元素。组合上述两个递归得到的结果,就得到了函数 three_sum(nums, target, count) 的结果,代码如下:res = []# 包含nums[0]t1 = three_sum(nums[1:], target - nums[0], count - 1)# 不包含nums[0]t2 = three_sum(nums[1:], target, count)if t1: for i in range(len(t1)): t = [nums[0]] t.extend(t1[i]) # 每个得到的结果前面加上 nums[0] res.append(t)if t2: for j in range(len(t2)): res.append(t2[j]) # 此时得到的res就是递归的最后结果综合就可以得到递归遍历所有三个元素和的情况并最终找出所有满足条件结果的三元集:def three_sum(nums, target, count): res = [] # 终止条件 if not nums: return res if count == 1 and target in nums: # 一定要这样写 return [[ target ]] elif count == 1 and target not in nums: return res # 包含nums[0] t1 = three_sum(nums[1:], target - nums[0], count - 1) # 不包含nums[0] t2 = three_sum(nums[1:], target, count) if t1: for i in range(len(t1)): # 犯了一个巨大的错误,extend() 方法的使用,它无返回,只会扩充原数组 # res.append([nums[0]].extend(t1[i])) t = [nums[0]] t.extend(t1[i]) res.append(t) if t2: for j in range(len(t2)): res.append(t2[j]) return res调用该函数的方式如下:nums = [-1, 0, 1, 2, -1, -4]# 0 为目标值,3为多少个元素和为targetres = three_sum(nums, 0, 3)这样的递归遍历思想在穷举中用的比较多,因为它以非常优雅的方式简化了穷举代码。不过这道题使用递归算法等价于穷举法,时间复杂度为 O(n3)O(n^3)O(n3),因此显得并不高效。对于最优的解法读者可以自行思考下然后解决它。
- 4. 递归的三要素 在明确递归的定义及数学模型之后,我们需要掌握递归的三要素:递归终止条件;递归终止时候的处理方法;递归中重复的逻辑提取,缩小问题规模。
- 5. 递归的应用场景 在日常的生活学习中,递归算法一般可以用来解决很多实际问题。回顾一下我们之前学习的排序算法,其中快速排序利用了递归的思想进行解决。总而言之,递归在很多场景中都有应用。比如说一个常见的对于操作系统里面删除指定路径下的文件夹里内容以及子文件夹里面内容的操作,就可以利用递归思想完成。这个时候递归的终止条件就是判断当前路径是文件,就可以直接删除;发现当前路径是文件夹,则递归调用方法,进入文件夹内部删除里面的文件内容。总而言之,递归问题在现实学习科研中经常会遇到,这是一种解决问题的思路与方法,将大问题拆分成小问题,然后求解小问题之后回归归纳,得出整个问题的求解结果。
- 2. 什么是递归? 递归(Recursion),是计算机科学与技术领域中一种常见的算法思想。在数学和计算机领域中,递归主要是指在函数的定义中使用函数自身的方法。顾名思义,递归主要包含两个意思,递和归,这个是递归思想的精华所在。递归就是有去(递去)有回(归来)。“有去” 是指递归问题可以分解成若干个规模较小、与原问题形式相同的子问题,这些子问题可以和原问题用相同的方法来求解。“有回” 是指这些问题的演化过程是一个从大到小,并且最终会有一个明确的终点,一旦达到终点,就可以从终点原路返回,解决原问题。更为直接的说法就是:递归的基本思想就是把大问题转化为相似的小问题解决。特别是在程序中的函数实现时,大问题的解决方案和小问题是一模一样的,所以就产生解决一个问题会调用函数本身的情况,这个也是递归的定义。
- 递归求 5 的阶乘 Python 实现 def F(n): if n == 1: return 1 return n * F(n - 1)前两行的语句是递归终止条件,这个是必须要有的,而且必须是递归要能到达的。最后一个 n * F(n - 1) 正是递归调用自身,且每次递归的参数都会减少直到最后的终止条件结束。我们用示例图来演示下 F(5) 执行的递归过程,这样方便我们理解递归调用。计算F(5)的递归调用递归算法动态示意图:从上面的示意图可以看到,递归的思想就是在不停调用本身往下执行,直到终止条件达到然后再回推结果。递归带来的好处非常明显,就是减少代码,让代码看起来简洁明了。假如我们要使用非递归算法来求解 n 的阶乘,代码如下:def F_no_recursive(n): s = 1 for i in range(1, n + 1): s = s * i return s可以看到,递归代码相比不使用递归的代码少了 for 循环,并且递归的代码看起来会比较简洁和清楚,这在二叉树的问题中会体现的非常明显。
vue组件递归相关搜索
-
vacuum
vagrant
val
validationgroup
validationsummary
vals
valueof
values
vant
variables
vb
vb if else
vb if语句
vb net
vb net 教程
vb net 数据库
vb net教程
vb net下载
vb 教程
vb 数组