JS 理解记录(递归)

本文通过寻找文件夹中文件的实例介绍了JavaScript递归的概念。从积极思考如何通过函数执行找文件动作,到结合实际理解递归调用的过程,强调递归在解决深度查找问题和处理引用数据类型深拷贝中的应用。同时,文中提醒在递归中设定结束条件的重要性。
摘要由CSDN通过智能技术生成
1.举例引入

举个栗子,电脑桌面有一个文件夹,文件夹里面有我需要的文件(如 xx.txt),但是又存在着许多的子文件夹,子文件夹里面又有子文件夹,而我需要的实体文件又散落在这些文件夹里面。此时,我需要精准有效地将所有的实体文件找出来,并备份,该怎么办?

假设:下方的红圈代表整个文件夹,蓝圈代表子文件夹,各个数字为实体文件。
在这里插入图片描述
实现:精准地获取文件也就是意味着,需要访问每一个子文件;有效地获取,也代表着不能胡乱寻找,得依次序,确保不遗漏。当我们按图中的方式开始依次找寻,每找到一个,就进行文件备份,到最后,就能解决这个问题。

转换思维:当我们用程序的思维来理解找文件的过程,又是什么样的呢?

2.积极思考

我们要找一个文件,是不是就相当于执行一个函数,我们提供参数,也就是文件夹,然后执行找文件的动作,得到返回值,也就是实体文件或其他。

// 找文件的方法
function  找文件(文件夹){
   
	// 找文件的动作
	return 文件 ||;
}

如何执行这个动作,就需要我们,逐一的找,并辨别我需要的文件,然后提取文件且备份。这一系列的动作,在程序中就可以理解为:遍历,判断,定义容器(变量)并返回。大致意思如下

// 找文件的方法
function  找文件(文件夹){
   
	let 备份 = 新建文件夹;
	遍历参数文件夹{
   
		if(实体文件){
   
			备份.添加(遍历中的文件)
		
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 递归是一种编程技巧,其中一个函数调用自身。在 JavaScript 中,递归方法可以用来解决复杂的问题,并使代码更简洁易读。 递归的基本模型包括以下几个步骤: 1. 定义递归终止条件:当递归达到一定的深度时,必须终止递归。 2. 分治:将问题分解为规模更小的子问题。 3. 调用自身:通过解决子问题来解决整个问题。 4. 记录结果:在递归的过程中,记录每一步的结果。 下面是一个简单的递归例子,计算阶乘: ``` function factorial(n) { if (n === 0) { return 1; } return n * factorial(n - 1); } ``` 在这个例子中,递归终止条件是 `n` 为 0,分治的子问题是计算 `n-1` 的阶乘,调用自身的方式是通过函数 `factorial` 调用,并将计算结果返回。 ### 回答2: 递归是一种在编程中常见的技巧,特别在JavaScript中,递归方法经常被用来解决问题。递归是指一个函数调用自身的过程。下面是关于JavaScript递归方法的一些重要信息: 1. 递归方法必须包含一个终止条件,否则函数将无限地调用自身。这个终止条件通常是某个特定条件的判断,一旦满足了该条件,递归将停止。 2. 递归方法必须能够将问题分解为更小的子问题,同时保持问题的解决方案是相同的。 3. 递归方法可以方便地解决一些复杂的问题,例如树和图的遍历,阶乘计算等。 4. 使用递归方法时需要小心,因为它可能会导致性能问题。递归过程中使用大量的函数调用,可能导致堆栈溢出。 5. 尽管递归方法可以让代码更简洁和易于理解,但在某些情况下,使用循环可能更高效和可维护。因此,在选择使用递归方法之前,需要仔细权衡。 总的来说,JavaScript递归方法是一种强大而灵活的编程技巧,可以解决各种问题。但在使用时需要注意终止条件和性能问题,以确保代码的正确性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值