递归函数

Posted ArtisticMonk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归函数相关的知识,希望对你有一定的参考价值。

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

 

以上是关于递归函数的主要内容,如果未能解决你的问题,请参考以下文章

vue递归组件的一些理解

哈斯克尔。我很困惑这个代码片段是如何工作的

如何在自定义PyYAML构造函数中处理递归?

JavaSE 方法的使用

JavaScript - 代码片段,Snippets,Gist

Java基础之方法的调用重载以及简单的递归