码迷,mamicode.com
首页 > 编程语言 > 详细

python递归函数

时间:2020-02-29 20:48:10      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:else   pytho   规模   val   问题   字典   min   字段   之间   

1.描述:

  • 递归函数:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

2.递归函数特性:

  • 必须有一个明确的结束条件;
  • 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
  • 相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。

3.实例说明

  • 计算阶乘 n! = 1 * 2 * 3 * ... * n,,用函数 fact(n) 表示, 可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n,所以,fact(n) 可以表示为 n * fact(n-1),只有 n = 1 时需要特殊处理
#相加计算,递归方式
def fact(n):
    if n > 0:
        return fact(n-1) + n
    else:
        return 0

print(fact(5))

4.实例应用

#找出接口报文中某个字段的值

queryUserList = {
  "code": "200",
  "msg": "查询用户成功!",
  "model": {
    "user1": {
        "userAccount": "17779828882",
        "userName": "zhengying2",
        "userMobile": "17779828882",
        "userEmail": "17779828882@qq.com"
      },
      "user2": {
        "userAccount": "17779828881",
        "userName": "zhengying1",
        "userMobile": "17779828881",
        "userEmail": "17779828881@qq.com"
      },
      "user3": {
        "userAccount": "17779828880",
        "userName": "zhengying0",
        "userMobile": "17779828880",
        "userEmail": "17779828880@qq.com"
      },
      "user4": {
        "userAccount": "admin",
        "userName": "admin",
        "userMobile": "",
        "userEmail": ""
      },
    "pages": 1
  }
}

#代码如下

values = []
def get_value(getkey,dict1):
    if isinstance(dict1,dict):      #验证入参格式是否为字典
        for k,v in dict1.items():   #取出所以的键值对
            if k == getkey:     #判断所拿到的键是否是预期传入的键
                values.append(v)
            get_value(getkey,v)     #进行递归

get_value("userEmail",queryUserList)
print(values)

 

python递归函数

标签:else   pytho   规模   val   问题   字典   min   字段   之间   

原文地址:https://www.cnblogs.com/ZhengYing0813/p/12384760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!