递归函数

"""
Author:Cairo
"""
#递归

# def jiechen(n):
#     '''
#     :param :递归是一个自己调用自己的函数,必须有一个明确的出口,不然程序会报错
#     :return n + jiechen(n - 1): 这里就是函数自己调用自己的执行代码,如果n!=1的话,就会一直执行,直到n == 1 为止
#     :attention:递归函数只能自己调用自己998次,如果超过就一样报错,它不是死循环,要注意哦!
#     '''
#     if n == 1:
#         return 1
#     else:
#         return n + jiechen(n - 1)
# print(jiechen(998))


# 练习:根据给定的姓名,在列表中查询姓名的序号(0-68)。
lst=['邢佳栋','李学庆','高昊','潘粤明','戴军','薛之谦','贾宏声','于波','李连杰','王斑','蓝雨','刘恩佑','任泉','李光洁','姜文','黑龙','张殿菲','邓超','张杰','杨坤','沙溢','李茂','黄磊','于小伟','刘冠翔','秦俊杰','张琳','陈坤','黄觉','邵峰','陈旭','马天宇','杨子','邓安奇','赵鸿飞','马可','黄海波','黄志忠','李晨','后弦','王挺','何炅','朱亚文','胡军','许亚军','张涵予','贾乃亮','陆虎','印小天','于和伟','田亮','夏雨','李亚鹏','胡兵','王睿','保剑锋','于震','苏醒','胡夏','张丰毅','刘翔','李玉刚','林依轮','袁弘','朱雨辰','丁志诚','黄征','张子健','许嵩']
def get_index(lst, str, lower, upper):
    '''
    :param lst: 名字列表
    :param str: 输入判断的名字
    :param lower: 开始的位置
    :param upper: 结束的位置
    :return:
    :middle:等于开始的位置与结束的位置 // 2 整除以2 得到中间的位置

    :记录一下循环体:如果输入的名字在于列表一半的的截取内可以找到:就走下一行再次调用自己直到找到这个名字。
                如果在前面截取的那一半的列表找不到这个名字的话,就走else:这样的话调用的那个自己的时候参数的开始值就得等于一半+1开始到最后
    '''
    if lower == upper:
        return upper
    else:
        middle = (lower + upper) // 2
        if str in lst[lower:middle + 1]:  # 注意:切片操作的终止位置是截取不到的,所以要+1才能正常判断。
            return get_index(lst, str, lower, middle)
        else:
            return get_index(lst, str, middle + 1, upper)

print(get_index(lst, input('请输入姓名:'), 0, len(lst)))
以上内容作为课堂笔记,如有雷同,请联系于我
原文地址:https://www.cnblogs.com/ArtisticMonk/p/9060426.html