zoukankan      html  css  js  c++  java
  • python-day15函数递归

    1.递归:

    在函数内,调用自己。  (技巧: 每次调用时,函数前面需加上return,这样返回值就可以一层一层 的返回去)

    #def age(n):
    #    if n == 1:
    #        return 40
    #    else:
    #        return age(n-1)+2

    #print(age(4))

    2.结束递归:

    当遇到return时,递归结束

    3.递归解决的问题就是通过参数来控制每一次调用缩小计算的规模

    4.递归适合的场景:数据的规模在减小,但是解决问题的思路没有改变

    5.例题:三级菜单

    menu = {
    # '北京': {
    # '海淀': {
    # '五道口': {
    # 'soho': {},
    # '网易': {},
    # 'google': {}
    # },
    # '中关村': {
    # '爱奇艺': {},
    # '汽车之家': {},
    # 'youku': {},
    # },
    # '上地': {
    # '百度': {},
    # },
    # },
    # '昌平': {
    # '沙河': {
    # '老男孩': {},
    # '北航': {},
    # },
    # '天通苑': {},
    # '回龙观': {},
    # },
    # '朝阳': {},
    # '东城': {},
    # },
    # '上海': {
    # '闵行': {
    # "人民广场": {
    # '炸鸡店': {}
    # }
    # },
    # '闸北': {
    # '火车战': {
    # '携程': {}
    # }
    # },
    # '浦东': {},
    # },
    # '山东': {},
    # }
    # def threeLM(dic):
    # while True:
    # for k in dic:print(k)
    # key = input('input>>').strip()
    # if key == 'b' or key == 'q':return key
    # elif key in dic.keys() and dic[key]:
    # ret = threeLM(dic[key])
    # if ret == 'q': return 'q'
    # elif (not dic.get(key)) or (not dic[key]) :
    # continue
    #
    # threeLM(menu)

    6.例题:二分法

    # def func(l, aim,start = 0,end = len(l)-1 ):
    # mid = (start+end)//2
    # if not l[start:end+1]:
    # return
    # elif aim > l[mid]:
    # return func(l,aim,mid+1,end)
    # elif aim < l[mid]:
    # return func(l,aim,start,mid-1)
    # elif aim == l[mid]:
    # print("bingo")
    # return mid
    #
    # index = func(l,68)
    # print(index)
  • 相关阅读:
    【转】StackExchange.Redis 事务控制和Batch批量操作
    mysql 修改时子查询的问题
    mysql 对于有null值的 NOT IN和NOT EXISTS
    【转】Core使用Redis做Session进程外储存
    Filter的注入方式 NET Core
    MiddleWare中间键实现 简单的防盗链 AOP
    c# Jenkins+PowerShell持续集成环境搭建
    VS2019下载离线安装包
    1226 六晴
    1225 五 晴
  • 原文地址:https://www.cnblogs.com/liuwei0824/p/7269069.html
Copyright © 2011-2022 走看看