JavaScript 递归介绍 (一)

it2022-05-05  164

一、递归的概念

在程序中函数直接或间接调用自己。就递归而言最重要的就是跳出结构,因为跳出了才可以有结果。

二、递归的思想

将一个问题由难化易,由繁化简,由复杂化简单的过程称为化归,它是转化和归结的简称。

递归思想就是将一个问题转换为一个已解决的问题来实现。

三、递归的介绍

函数的递归就是在函数中调用自身,看一个简单的例子:

function fun(n) { ... fun(n-1); }

为了理解递归在理论上是如何工作的,我们先举一个与代码无关的例子。想象一下,你是一家公司的话务员。由于这是一家业务繁忙的公司,你的座机连接多条线路,因此你可以同时处理多个电话。每条线路对应接收器上的一个按钮,当有来电时,该按钮将闪烁。今天当你到达公司开始工作时,发现有四条线路对应的按钮正在闪烁,所以你需要接听所有这些电话。

你接通线路一,并告诉他“请稍等”,然后你接通线路二,并告诉他“请稍等”,接着,你接通线路三,也告知他“请稍等”,最后,你接通线路四,并与其通话。当你结束了与线路四的通话之后,你回过头来接通线路三,当你结束了与线路三的通话之后,你接通线路二,结束之后,你再接通线路一,当与线路一的这位客户结束通话后,你终于可以放下电话了。

这个例子中的每一通电话就像某函数中的一个递归调用。当你接到一个电话且不能立即处理时,这个电话将被搁置;当你有一个不需要立即触发的函数调用时,它将停留在调用栈上。当你可以接听一个电话时,这个线路会被接通;当你的代码能够触发一个函数调用时,它会从调用栈中弹出。在你看到之后的代码案例有些发懵时,请回想一下这个比喻。

不染-何程龙 认证博客专家 Python Java SQL 何程龙,大学计算机信息管理专业在读,现就任后端开发工程师、数据库工程师。曾担任城建创新创业学院理事会会长,现为博客专家、签约讲师,中国开源协会-开发分会管理委员会委员。带过多批学员,因授课耐心细致,通俗易懂,风趣幽默,富有激情,受学员一致好评。现主要从事软件开发及软件教育培训,具有丰富的实战经验,善于将复杂问题简单化,擅长Web前端、JavaScript框架、Java并发、C#编程、Python Web、数据库SQL等领域及技术。

最新回复(0)