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