To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归
关于递归和循环的生动解释
1:递归
你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。
2:循环
你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门(若前面两扇门都一样,那么这扇门和前两扇门也一样;如果第二扇门比第一扇门小,那么这扇门也比第二扇门小),你继续打开这扇门,一直这样继续下去直到打开所有的门。但是,入口处的人始终等不到你回去告诉他答案。
3:什么是递归
数学中是这样定义的:是指在函数的定义中使用函数自身的方法,包含递和归的两个意思,也是递归思想的精华所在。
递归就是有去有回, “有去”是指:递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决,就像上面例子中的钥匙可以打开后面所有门上的锁一样;“有回”是指 : 这些问题的演化过程是一个从大到小,由近及远的过程,并且会有一个明确的终点(临界点),一旦到达了这个临界点,就不用再往更小、更远的地方走下去。最后,从这个临界点开始,原路返回到原点,原问题解决。
4:递归三要素
(1)明确递归终止条件
(2)给出递归终止时的处理办法
(3)提取重复的逻辑,缩小问题规模
5:递归的应用场景
(1)问题的定义就是按递归进行定义的(斐波那契数列,阶乘)
(2)问题的解法是递归的(汉诺塔问题)
(3)数据结构是递归的(链表、树的操作、树的遍历、树的深度)
递归和迭代的理解
最新推荐文章于 2022-07-16 17:15:46 发布
本文通过生动的例子解释了递归和循环的区别。递归如同打开一连串门,有去有回,最终能返回并计数;循环则是在不断重复中解决问题,可能陷入无限循环。递归的三个要素包括明确的终止条件、终止时的处理和重复逻辑的提取。递归常见于问题定义、解法和数据结构,如斐波那契数列、汉诺塔和树的遍历。
摘要由CSDN通过智能技术生成