递归,在数学与计算机科学中,是指在方法的定义中使用方法自身。也就是说,递归算法是一种直接或者间接调用自身方法的算法。简言之:在定义自身的同时又出现自身的直接或间接调用。
注意:递归必须要有一个退出的条件!
递归算法解决问题的特点:
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
在项目中可以使用到递归来完成一些需要多次调用自身的设计
如以下情况:
设计一个侧边菜单,需要分为一级,二级,三级等菜单,此时多级菜单需要不断的调用自身的子菜单来分下一级菜单。
代码如下:
-
- for="(item, index) in menuList" :key="item.path">
-
- <template v-if="!item.children" >
- <el-menu-item :index="item.path" v-if="!item.meta.hidden">
- <template #title>
- <span>标 span>
- <span>{{ item.meta.title }}span>
- template>
- el-menu-item>
- template>
-
- <template v-if="item.children && item.children.length == 1">
- <el-menu-item
- v-if="item.children[0].meta.hidden"
- :index="item.children[0].path"
- >
- <template #title>
- <span>{{ item.children[0].meta.title }}span>
- template>
- el-menu-item>
- template>
-
- <el-sub-menu
- :index="item.path"
- v-if="item.children && item.children.length > 1"
- >
- <template #title>
- <span>{{ item.meta.title }}span>
- template>
- el-sub-menu>
-
在设计多级菜单的时候,我们可以用递归的方法来解决。
需要将整个template设计为一个
代码如下:
- //设计多级菜单
- :index="item.path"
- v-if="item.children && item.children.length > 1"
- >
- <template #title>
- <span>{{ item.meta.title }}span>
- template>
- <Menu :menuList="item.children">Menu>
-
其中