Python 递归

递归

递归是基于函数,函数构成的循环,函数包含了对自身的调用,称为递归。

  • 递归类似于循环,循环解决的问题一般都是线性的,递归不单可以解决线性问题也可以解决非线性问题。
  • 递归优于循环,递归占用的内存比普通循环更多,因此递归的效率比普通循环要更高一些。

注意事项:递归在使用时要首先注意的是递归结束的标志,如果没有结束标志,系统默认自带的递归上限为1000,超出会报错。

简单实例:

mylist = [1,2,3,4,5]

def mysum(opj): #递归函数
      if not opj:
            return 0
    else:
            return opj[0] + mysum(opj[1:])

res = mysum(mylist)
#实际运行过程
#retu obj[0] + mysum(obj[1:]) 
#         1  + mysum([2,3,4,5])
#                     2  + mysum([3,4,5])
#                                   3  + mysum([4,5])
#                                                  4  + mysum([5])
#                                                                5  + mysum(obj[])
#                                                                                      0       

print(res)

递归解决非线性问题

实例:

mylist = [1,2,[3,4,[5],6],7]

_sum = 0
def mysum(opj):
    global _sum#声明了_sum为全局的
    for var in opj:
        if not isinstance(var,list):# isinstance(变量,类型):判断一个变量是否属于某种类型 
            _sum += var
        else:
            mysum(var)
    return
#递归的终止:for循环终止
mysum(mylist)
print(_sum)
posted @ 2019-03-27 20:53  娑婆迷徒  阅读(194)  评论(0编辑  收藏  举报