算法总结——JS实现递归

本文介绍了递归的概念,包括其定义、递归条件和递归的终止方案。通过比较循环与递归的区别,强调了递归在解决问题时的作用。文章以斐波那契数列和汉诺塔问题为例,详细解析了如何用JavaScript实现递归,同时指出递归可能导致的重复计算和栈溢出问题,并探讨了动态规划作为递归替代方案的优势。
摘要由CSDN通过智能技术生成

目录

一、递归定义

百度百科

其他

二、循环与递归

三、几个经典题

斐波那契数

题目

基本思路

递归解法

动态规划解法 

 汉诺塔

题目 

基本思路


一、递归定义

百度百科

递归,就是在运行的过程中调用自己。

函数嵌套调用过程示例

构成递归需具备的条件:

1. 子问题须与原始问题为同样的事,且更为简单;

2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

其他

递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。

你可能想知道如何实现调用自身的函数。诀窍在于,每当递归函数调用自身时,它都会将给定的问题拆解为子问题。递归调用继续进行,直到到子问题无需进一步递归就可以解决的地步。

为了确保递归函数不会导致无限循环,它应具有以下属性:

  • 一个简单的基本案例 —— 能够不使用递归来产生答案的终止方案。
  • 一组规则,也称作递推关系,可将所有其他情况拆分到基本案例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值