|  RSS订阅  |  加入收藏

Python学习笔记十一(递归)

本次学习笔记主要是记录Python用来创建递归函数来解决一些特定的问题,部分问题同步使用迭代方法。
摘要
...

本次学习先回顾了前两天的lambda表达式,使用lambda表达式创建匿名函数。接着学习本次课程的内容:Python的递归。什么是递归,程序调用自身的编程方法叫递归。递归的两个条件,首先是需要调用自身。其次程序能够返回正确的返回值。递归在某些情况下能更简单有效的解决问题,在递归和迭代都能解决问题的情况下,也并非所有的情况都适合使用递归函数。



首先来看一个阶乘的例子。

1、使用迭代方法计算阶乘。

未标题-1.jpg

2、使用递归方法计算阶乘

未标题-2.jpg

通过上述的例子可以看出,递归调用了函数自身,最后成功返回了结果,显然递归的代码更加优雅。

再来看下使用递归计算斐波那契数列。

1、使用迭代方法计算结果。

未标题-3.jpg

2、使用递归方法计算结果。

未标题-4.jpg

通过上述的例子递归方法更加明确。但此时如果计算的位数持续增加,那么递归的效率将急剧递减,因为递归一层一层的返回数据成倍的增加了运算量,而此时迭代算法反而效率更高,所以在计算类似问题的时候需要综合考量效率和性能。

最后使用递归计算汉诺塔步骤。

汉诺塔游戏是一款古老而经典的益智游戏,使用递归算法将很好的指明游戏的具体操作步骤,从而更加快速的通关。

未标题-5.jpg


打赏
  Python    
转载请注明出处,未经许可禁止商用!
西枫里 熊掌号
代码改变世界 ———— 半路出家,全程修道
发表评论
*依据《网络安全法》规定,您需实名认证后才能评论!
很多语言都是相通的。
感觉回到大学
老哥,看你博文就是在温习
真心佩服西西大佬,加油~!
这么晚,在玩算法!的确只有晚上,才能静下来!哈哈