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)
  • 相关阅读:
    C#和sqlserver中生成新的32位GUID
    IIS7下swfupload上传大文件出现404错误
    jQuery 判断是否为数字的方法 及 转换数字函数
    js数组与字符串的相互转换方法
    jquery 中如何将数组转化为json字符串,然后再转化回来?
    Firemonkey Android 虚拟机
    Eclipse apk 签名
    win10 修改hosts
    eclipse 预览Android界面报错
    夜神模拟器
  • 原文地址:https://www.cnblogs.com/liuwei0824/p/7269069.html
Copyright © 2011-2022 走看看