python的递归
Posted 木木烽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的递归相关的知识,希望对你有一定的参考价值。
今天,我们要讲的内容是关于python的递归。
什么是递归?看这个名字,你也许能够猜出个大概。关于递归,我们有一个很经典的应用,就是我们以前高中一些数学题目中的累乘,像n *(n-1)* (n-2) * ... * 1。在这里,如果要让你计算最终的结果,你可能会想到用for循环来实现,但是,我们在这里可以稍微进行优化一下,比如像这个例子一样:
#for循环
def LSF(n):
result = n
for i in range(1,n):
result *= i
return result
#递归
def LSF(n)
if n == 1:
return 1
else:
return n * LSF(n - 1)
我们来看一下上面这两段代码,第一段是用for循环实现的,第二段是用递归实现的。我们看一下这两段代码有什么区别,先来看for循环,简单的定义了一个区间,然后在这个区间内让每一个数逐渐相乘,就得到了我们要的结果了。重点看一下递归这个操作,先是判断n是否为1,如果为1的话,就直接得到结果,因为n=1,我们用接下来的代码的话,最总结果是0,这样的结果并不准确,然后我们排除1的情况,计算接下来 的值,直接运算n *(n-1)。这样的代码效率可能没有for循环高,但是,可读性却好很多。
最后,我们来讲一下什么是二分查找,所谓的二分查找就是一种寻找某个数据的高效手段。比如我们要在0到100内找到81这个数,我们先把0到100对半分,发现81在50到100之间我们再进行一次对半分,发现81在75到100之间,这样一来,我们经过几次对半分,就找到我们要的数81了,这样的效率要比我们从一数到一百要高得多,具体如何用代码实现,我们明天再讲。
好的,今天的内容就讲到这里啦~
(文章图片若有侵权,请联系作者删除)
以上是关于python的递归的主要内容,如果未能解决你的问题,请参考以下文章