时间:2021-05-22
听到递归总觉得挺高大上的,为什么呢?因为对其陌生,那么今天就来一文记住递归到底是个啥。
不过先别急,一起来看一个问题:求10的阶乘(10!)。
求x的阶乘,其实就是从1开始依次乘到x。那么10的阶乘就是 1*2*3*4*5*6*7*8*9*10
假如,我们在没接触过递归的情况下,如何去解决这样的问题呢?
最简单粗暴的方式 直接print(1*2*3*4*5*6*7*8*9*10)出结果就行了,结果是3628800。
但是这种方式显然不是我们想要的,那么可以试试用for循环的方式来解决。
def factorial(n): """ n 就是要求的阶乘的数字 """ result = n for i in range(1, n): result *= i return resultif __name__ == '__main__': print(factorial(10))相信大家一定都听过这么一个故事:
从前有座山,山里有做庙,庙里有个老和尚在讲故事,讲的什么呢?
从前有座山,山里有做庙,庙里有个老和尚在讲故事,讲的什么呢?
从前有座山,山里有做庙,庙里有个老和尚在讲故事,讲的什么呢?
...
其实这种就是递归,说白了,就是自己去引用自己。
那么,递归用在函数中,就可以是这样的:
在调用函数factorial的时候 在函数中又继续调用factorial,跟上面的故事一样,就可以无穷无尽的递归下去,
直到讲故事的老和尚累晕,以及电脑的内存溢出宕机。
但是,重要的一点,递归只是解决问题的一种方式而已,比如上面的求阶乘,我用for循环一样解决。
如果要用递归解决上面的阶乘问题,可以再进一步了解下递归的整体思想。
递归的整体思想就是,将一个大问题分解成一个个的小问题,直到问题没有办法再继续分解,于是,再去解决问题。
那么,递归式函数就要满足2个条件:
可以用这个思想来尝试用递归的方式解决阶乘的问题。
10! = 10 * 9! # 10的阶乘其实可以看做是10 * 9的阶乘9! = 9 * 8! # 9的阶乘可以看做是9 * 8的阶乘8! = 8 * 7!...2! = 2 * 1!1! = 1可以看到,最后分解到1的时候就不可再继续分解了,那么1就是基线条件了。
def factorial(n): # 基线条件,当满足时,则不再递归 if n == 1: return 1 # 递归条件,当n不等于1时,继续递归 return n * factorial(n - 1)if __name__ == '__main__': print(factorial(10))以上就是python 递归相关知识总结的详细内容,更多关于python 递归的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
今天在慕课网上学习了有关于python操作MySQL的相关知识,在此做些总结。python操作数据库还是相对比较简单的,由于python统一了各个数据库的接口程
Python中迭代器与生成器实例详解本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下:1.手动遍历迭代器应
本文实例总结了python遍历目录的方法。分享给大家供大家参考,具体如下:方法一使用递归:"""defWalkDir(dir,dir_callback=None
概要本人python理论知识远达不到传授级别,写文章主要目的是自我总结,并不能照顾所有人,请见谅,文章结尾贴有相关链接可以作为补充全文分为三个部分装饰器理论知识
Python学习第一篇。把之前学习的Python基础知识总结一下。一、认识Python首先我们得清楚这个:Python这个名字是从MontyPython借鉴过来