几种常见的JS递归算法
递归的概念
就是函数自己调用自己本身,或者在自己函数调用的下级函数中调用自己。
递归的步骤
- 假设递归函数已经写好
- 寻找递推关系
- 将递推关系的结构转换为递归体
- 将临界条件加入到递归体中
经典案例 1: 求和
求 1-100 的和
function sum(n) {if (n == 1) return 1return sum(n - 1) + n
}
经典案例 2: 斐波拉契数列
0,1,2,3,5,8,13,21,34,55,89...求第 n 项
// 递归方法
function fib(n) {if (n === 1 || n === 2) return n - 1return fib(n - 1) + fib(n - 2)
}
console.log(fib(10)) // 34
//非递归方法 //
function fib(n) {let a = 0let b = 1let c = a + bfor (let i = 3; i < n; i++) {a = bb = cc = a + b}return c
}
console.log(fib(10)) // 34
经典案例 3: 爬楼梯
JS 递归 假如楼梯有 n 个台阶,每次可以走 1 个或 2 个台阶,请问走完这 n 个台阶有几种走法
function climbStairs(n) {if (n == 1) return 1if (n == 2) return 2return climbStairs(n - 1) + climbStairs(n - 2)
}
经典案例 4: 深拷贝
原理: clone(o) = new Object; 返回一个对象
function clone(o) {var temp = {}for (var key in o) {if (typeof o[key] == 'object') {temp[key] = clone(o[key])} else {temp[key] = o[key]}}return temp
}
经典案例 5:递归组件
- 递归组件: 组件在它的模板内可以递归的调用自己,只要给组件设置 name 组件就可以了。
- 不过需要注意的是,必须给一个条件来限制数量,否则会抛出错误: max stack size exceeded
- 组件递归用来开发一些具体有未知层级关系的独立组件。比如:联级选择器和树形控件
<template><div v-for="(item,index) in treeArr"> {{index}} <br/><tree :item="item.arr" v-if="item.flag"></tree></div>
</template>
<script>
export default {// 必须定义name,组件内部才能递归调用name: 'tree',data(){return {}},// 接收外部传入的值props: {item: {type:Array,default: ()=>[]}}
}
</script>
几种常见的JS递归算法相关推荐
- js中一种常见条件判断if(var)的坑
在处理js代码判断真假时经常会这么写. //从某个地方获取的值. var vale = fun(......... );if(!value){进入这里表示value的布尔值为false } 我们知道, ...
- 四种常见的浏览器内核简介----JS城市选择控件
一 四种常见的浏览器内核简介 Gecko: Gecko: Netscape6开始采用的内核,后来的Mozilla FireFox (火狐浏览器) 也采用了该内核,Gecko的特点是代码完全公开,因此, ...
- 使用CSS替代JS实现几种常见的特效
本文介绍用CSS代替JS来实现我们页面中所需要的几种常见效果.包括导航高亮,下拉菜单等. 1. 导航高亮 导航高亮是一种很常见的问题,包括当前页面的导航在菜单里面高亮和hover时高亮.你可 ...
- html怎么创建数组,js创建数组的三种方法 JS数组去重的几种常见方法
JS数组有哪几种定义方式? js 里创建一个数组 那几种方式有什么区别吗?a = new Array(); b = []; 性能问题吗?? function clear(arr) { // 1 如何获 ...
- JS几种常见的用户名检测
本博客主要讲述关于JS的几种常见的用户名检测.包括 一.不能以数字开头–isNaN() // isNaN 是一个系统的函数,用于判断一个变量是否为 NaN //strings指的是要判断对象 //st ...
- js几种常见的递归方法
js几种常见的递归方法 递归的概念:就是函数调用函数本身,或者在自己函数调用的下级调用函数自己: 案例1:求和,1-100 function sun(n){if(n==1) return 1} 案例2 ...
- JS中4种常见的内存泄漏
一.什么是内存泄漏 本质上讲,内存泄漏是当一块内存不再被应用程序使用的时候,由于某种原因,这块内存没有返还给操作系统或空闲内存池的现象. 二.几种常见的内存泄漏 1.意外的全局变量 一个未声明变量的引 ...
- js内存泄漏的几种常见情况
内存泄漏 内存泄漏是指不再用到的内存,没有及时释放.既不能使用,又不能回收. 导致内存泄漏的几种常见情况 1.意外形成全局变量 解决方法:加上 'use strict' 启用严格模式来避免这类问题, ...
- Ajax 和 XML: 五种常见 Ajax 模式
Asynchronous JavaScript + XML(Ajax)无疑是 2006 年最热门的技术术语,且有望在 2007 得到进一步发展.但是对您的应用程序来说它究竟有什么意义呢?Ajax 应用 ...
最新文章
- 使用who.is查域名DNS信息以及用sameip.org查其他网站
- 维基解密揭秘CIA五种恶意软件用法
- 函数幂计算机中怎么用,Excel中幂函数的操作使用
- boost::fusion::single_view用法的测试程序
- Oracle 数字与空值的排序问题
- java整合flex
- 学习笔记3-C语言-基础
- php购物车内物品删除,求助 购物车 用session删除 列表的一条
- 怎么把php网站变灰,CSS效果,让网站全部变成灰色(黑白)
- 苏宁公布双11战报:全渠道订单量增长76% 物流发货完成率达99.6%
- mysql for 循环删除_Java增强for循环中删除元素抛异常问题
- Spring beans配置方案(二) 学习笔记
- 《深海探测装备》学习笔记1(深海探测传感器)
- 李飞飞创建ImageNet的基本逻辑
- Eclipse中没有Servers或Dynamic Web Project的解决方案
- C. Petya and Inequiations
- 元宇宙NFT最近最火的项目,该如何选择平台呢
- Mac切换docker镜像源
- SPP、ASPP与PPM
- 南非SABS EMC CoC简介