函数之递归

一 递归

递归的概念:递归的概念是算法的范畴本来不属于python语言的语法内容,但是在每个编程语言系列教学都要讲到递归。

如果掌握了递归的方法会发现是一个非常棒的变成思路。

 什么叫做递归(recursion):一个函数在自己的内部调用函数本身。

# def func(num,l,start=None,sed=None):
#     start=start if start else 0
#     sed=sed if sed else len(l)-1
#     mid=(sed-start)//2+start
#     if l[mid]>num:
#         return func(num,l,start,mid-1)
#     elif l[mid]<num:
#         return func(num,l,mid+1,sed)
#     else:
#         return mid,l[mid]
# l=[2,3,5,10,15,16,18,22,16,30,32,35,41,42,43,55,56,66,67,69,72,76,73,82,88]
# print(func(66,l))

递归的深度在python中是有限制的。

递归的好处就是代码简介精炼。

  自己咋定义一个递归函数的时候,必须要有一个限制。

递归的副作用:1 递归函数可以调用本身,但是每次都需要进行 压栈,弹栈保存和恢复寄存器的栈的操作,在这个上面很消耗时间和空间。

       2 如果递归一旦忘记返回或者错误的设置了返回的条件,那么在执行递归代码会成为一个无底洞,只进不出。(递归的口诀:递归递归,归去来兮)

  使用迭代是考验毫秒级的,而实现递归是考验CPU的能力(n秒------n分钟不等)。

二 解耦

 什么叫做解耦:要完成一个完整的功能,但是这个功能的规模要尽量的小,并且和这个功能无关的其他代码应该和这个函数分离。

    解耦的好处:1 增强代码的重用性;2 减少代码变更的相互影响;3 减少代码的冗余。

原文地址:https://www.cnblogs.com/fangjie0410/p/7484965.html