python 递归函数 | 您所在的位置:网站首页 › 递归函数应用实例 › python 递归函数 |
目录递归函数1、定义:函数在运行的过程中,直接和间接调用了自身,就是递归函数2、递推到回溯的流程图:
递归函数
1、定义:函数在运行的过程中,直接和间接调用了自身,就是递归函数
python默认的最大递归深度为1000次 实例如下: import sys # 获取最大递归深度 print(sys.getrecursionlimit()) # 结果 1000 # 修改最大递归深度为2000 sys.setrecursionlimit(2000) print(sys.getrecursionlimit()) # 结果 20001. 递归函数的特性: 必须有一个结束的条件 每一次递归都必须离“结果”更近一步 通常前一次的输出作为后一次的输入 如果没有结束的条件或者递归次数过多会导致内存溢出2. 递归函数执行过程: 递推 一层一层往下推导答案,每一次推导必须离结果更近 回溯 依据递推的结论往回推导最初要求的答案,前一次的输出做为了后一次的输入3. 大白话解释递推函数执行过程: 案例1: 求小孩A的年龄? A说:我的年龄比B大2岁;B说:我的年龄比C大2岁 C说:我的年龄比D大2岁;D说:我3岁 那么从A说的条件到D说他的年龄这个过程为递推,然后3+2+2+2求A的年龄这个过程为回溯。 代码实现如下:用for循环和递归函数实现 ''' 伪代码: d_age = 3 c_age = d_age +2 = 5 b_age = c_age +2 =7 a_age = b_age + 2 =9 ''' # for循环实现 d_age = 3 for i in range(3): d_age+=2 print(d_age) # 递归函数实现 def get_age(n): # d的年龄为3,d为n=1 if n==1: return 3 # 求a的年龄就是d的年龄+2+2+2 return get_age(n-1)+2 print(get_age(4)) 2、递推到回溯的流程图:案例2: 求100的前n项和,用for循环和递归函数实现 sum_num = 0 for i in range(101): sum_num += i print(sum_num) # 结果5050 def total_num(n): if n >0: return n+total_num(n-1) else: return 0 print(total_num(100)) # 结果5050案例3: 求6的阶乘,for循环和递归函数实现 # 求6的阶乘 n=6 for i in range(1,n): if i ==1: continue else: n = n*i print(n) def get_num(n): if n == 1: return n return get_num(n-1)*n print(get_num(6)) #结果 720 720案例4: 打印出列表中每一个元素(列表除外),for循环和递归函数实现 # for循环实现 l = [1,[2,[3]]] for i in l: if type(i) is int: print(i) else: for j in i: if type(j) is int: print(j) else: for k in j: if type(k) is int: print(k) #结果 1 2 3 # 递归函数实现 l = [1,[2,[3]]] def get_num(n): for i in n: if type(i) is int: print(i) else: # 获取剩下的列表 get_num(i) get_num(l) #结果 1 2 3学完以后,从一脸懵逼到九脸懵逼!但是仍然要持续更新······ |
CopyRight 2018-2019 实验室设备网 版权所有 |