dawn-liu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一递归函数

我们老师经常喜欢讲的一句话就是:人理解函数,神理解递归,那么什么是递归函数?

递归函数:在一个函数里面调用函数本身,也就是说这个函数里面出现了和函数一样的名字

例如:

def  func(n):
    print('我是递归%s' %n)
    n=n+1
    func(n)
n=10
func(n)

上面的例子,它会无限递归下去,那么,它到什么时候停止呢,天荒地老,还是海枯石烂?

经过实际证明,它内部有个限定值:997,一旦到了998它就报错了,函数的每次调用都会产生一个名称空间,是要消耗内存的,这么多的递归基本能解决问题了,没有的话,需要优化代码了。

那是不是可以突破这个限制呢,答案是可以

import sys
print(sys.setrecursionlimit(‘任意值’))

通过上面的代码,你可以修改为任意值,但是这个情况似乎只能当作一个热闹,修改是没有意义的。

二递归示例

递归很多的场景是本次的操作需要前一次的数据,以此类推下去。。。

例如阶乘

def factorial(n):
    if n==1:return n
    else:
        return n*factorial(n-1)
print(factorial(10))

 

  

posted on 2018-06-25 09:04  dawn-liu  阅读(105)  评论(0编辑  收藏  举报