python 递归函数 您所在的位置:网站首页 递归函数应用实例 python 递归函数

python 递归函数

2024-06-03 08:02| 来源: 网络整理| 查看: 265

目录递归函数1、定义:函数在运行的过程中,直接和间接调用了自身,就是递归函数2、递推到回溯的流程图:

递归函数

image

1、定义:函数在运行的过程中,直接和间接调用了自身,就是递归函数

python默认的最大递归深度为1000次

实例如下:

import sys # 获取最大递归深度 print(sys.getrecursionlimit()) # 结果 1000 # 修改最大递归深度为2000 sys.setrecursionlimit(2000) print(sys.getrecursionlimit()) # 结果 2000

1. 递归函数的特性:

必须有一个结束的条件 每一次递归都必须离“结果”更近一步 通常前一次的输出作为后一次的输入 如果没有结束的条件或者递归次数过多会导致内存溢出

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、递推到回溯的流程图:

image

案例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

image

学完以后,从一脸懵逼到九脸懵逼!但是仍然要持续更新······ image



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有