码迷,mamicode.com
首页 > 其他好文 > 详细

递归函数

时间:2018-05-19 17:10:32      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:att   位置   middle   color   超过   程序   列表   找不到   span   

"""
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)))

 

递归函数

标签:att   位置   middle   color   超过   程序   列表   找不到   span   

原文地址:https://www.cnblogs.com/ArtisticMonk/p/9060426.html

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