递归函数


递归函数

递归函数就是直接或间接调用函数自身的函数,当我们使用这种函数的时候,并不会出现预料之中的死循环,当循环次数达到1000左右就会被解释器强行停止,虽然官方说法是1000次,但是当我们使用时,通常会在996次左右停止。但是这种情况下的函数并不算递归函数,递归函数有以下两个条件:

1.直接或者间接调用自己
2.每次调用都必须比上一次简单 并且需要有一个明确的结束条件
递推:一层层往下
回溯:基于明确的结果一层层往上

1.函数的递归调用
	# 这里是直接和间接的调用情况
 	# 直接调用
    # def index():
    #     print('from index')
    #     index()
    # index()
    # 间接
    # def index():
    #     print('from index')
    #     func()
    #
    # def func():
    #     print('from func')
    #     index()
    #
    # func()
    '''最大递归深度:python解释器添加的安全措施'''
    # count = 0
    # def index():
    #     global count
    #     count += 1
    #     print(count)
    #     index()
    # index()
    '''官网提供的最大递归深度为1000 我们在测试的时候可能会出现996 997 998'''
    
2.递归函数
	1.直接或者间接调用自己
 	2.每次调用都必须比上一次简单 并且需要有一个明确的结束条件
		递推:一层层往下
  		回溯:基于明确的结果一层层往上
 	 """
    get_age(5) = get_age(4) + 2
    get_age(4) = get_age(3) + 2
    get_age(3) = get_age(2) + 2
    get_age(2) = get_age(1) + 2
    get_age(1) = 18
    """
    def get_age(n):
        if n == 1:
            return 18
        return get_age(n-1) + 2
    res = get_age(5)
    print(res)

当然这个重复引用的次数也不是只能是1000次,可以使用setrecursionlimit()方法改变次数

import sys 倒入系统板块
print(sys.getrecursionlimit()) 内置方法. 1000是递归最大次数
sys.setrecursionlimit(2000) 可以自定义最大次数
print(sys.getrecursionlimit())


posted @ 2022-10-16 19:21  致丶幻  阅读(60)  评论(0编辑  收藏  举报