码迷,mamicode.com
首页 > 编程语言 > 详细

python的递归

时间:2018-06-12 21:37:44      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:lse   有一个   二分查找   如何   判断   image   操作   分享   col   

今天,我们要讲的内容是关于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的递归

标签:lse   有一个   二分查找   如何   判断   image   操作   分享   col   

原文地址:https://www.cnblogs.com/Galaxyfengfeng/p/9175083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!