递归和迭代_什么是递归和迭代

递归:

你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门1、定义 (什么是递归?)
在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。实际上,递归,顾名思义,其包含了两个意思:,这正是递归思想的精华所在。2、递归思想的内涵(递归的精髓是什么?)
正如上面所描述的场景,递归就是有去(递去)有回(归来),如下图所示。“有去”是指:递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决,就像上面例子中的钥匙可以打开后面所有门上的锁一样;“有回”是指 : 这些问题的演化过程是一个从大到小,由近及远的过程,并且会有一个明确的终点(临界点),一旦到达了这个临界点,就不用再往更小、更远的地方走下去。最后,从这个临界点开始,原路返回到原点,原问题解决。  

d98700e1d8283549178a5ffc4c79ef96.png

更直接地说,递归的基本思想就是把规模大的问题转化为规模小的相似的子问题来解决。特别地,在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况,这也正是递归的定义所在。格外重要的是,这个解决问题的函数必须有明确的结束条件,否则就会导致无限递归的情况。

递归(recursion):递归常被用来描述以自相似方法重复事物的过程,在数学和计算机科学中,指的是在函数定义中使用函数自身的方法。(A调用A)迭代(iteration):重复反馈过程的活动,每一次迭代的结果会作为下一次迭代的初始值。(A重复调用B)。(aka:重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。此过程的每一次结果,都是由对 前一次所得结果 施行相同的运算步骤 得到的)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递归迭代是两种常见的解决问题的编程方法,它们在处理数据结构和算法时有着不同的执行机制和理解方式。 **递归**: 递归是一种通过将大问题分解为更小的相同或类似子问题,并调用自身来解决这些子问题的过程。它通常涉及一个函数(或方法)调用自身,并在每次调用时处理规模更小的问题,直到达到基本情况(也称为递归基或终止条件),然后逐级返回结果。递归的一个关键特征是每次调用都需要保存状态以便于后续恢复。 **迭代**: 迭代则是在循环结构中解决问题,通常使用循环(如for、while等)来逐步执行一系列步骤,每次迭代都会更新当前状态,直到达到预设的终止条件。迭代不需要函数调用自身,而是直接在循环内部完成任务,没有明确的“递归”过程。 **区别**: 1. **思维方式**:递归是自上而下的,像倒推游戏一样;迭代则是自底向上的,像爬楼梯一样。 2. **效率**:递归可能会导致大量的函数调用开销,如果递归深度过深可能导致栈溢出;而迭代通常更节省内存。 3. **控制流**:递归依赖于函数返回和调用,易于理解和表达问题的本质;迭代则更加直观,便于实现复杂的数据结构遍历。 4. **语言支持**:并非所有编程语言都对递归有良好的支持,一些有限制的语言可能需要特殊技巧或库来避免栈溢出。 **相关问题**: 1. 递归是如何避免无限循环的? 2. 什么情况下适合使用迭代而非递归? 3. 递归迭代哪种更容易理解和调试?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值