首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python递归函数及函数文档

python递归函数及函数文档

作者头像
不止于python
发布2022-05-31 20:09:59
发布2022-05-31 20:09:59
5540
举报
文章被收录于专栏:不止于python不止于python

递归函数 定义 在函数内调用当前函数本身的函数就是递归函数

递归函数的优缺点

  优点:定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

  缺点:使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出

使用例子

代码语言:javascript
复制
# 假如街上有这么一群人,我想问知道长沙的小吃街在哪。其中只有狗菲(大吃货)知道在哪。
names=["我","刘二","张三","李四","狗菲","王五"]
# 问路
def ask_way(lis):
    # 街上就我一个人的情况下
    if len(lis)==1:
        return "没有人知道这个地方在哪。"
    # 街上不只我一个人的情况下,先问第一个人
    name=lis.pop(0)
    # 如果这个人是狗菲,那么问到路,递归结束
    if name=="狗菲":
        return "狗菲说:长沙的小吃街在天心区南门口!!"
    # 如果这个人不知道路,就去问下一个人,下一个人就好把结果告诉这个人。
    print("<%s>问:你[%s]好,请问你知道长沙的小吃街在哪吗?" % (name, lis[0]))
    print("不好意思,我帮您问一下%s,他可能会知道!!\n"%lis[0])
    res=ask_way(lis)
    if name != "我":
        print("<%s>说:%s" % (name, res))
    return res

ask_way(names)

# 输出结果为:
"""
<我>问:你[刘二]好,请问你知道长沙的小吃街在哪吗?
不好意思,我帮您问一下刘二,他可能会知道!!

<刘二>问:你[张三]好,请问你知道长沙的小吃街在哪吗?
不好意思,我帮您问一下张三,他可能会知道!!

<张三>问:你[李四]好,请问你知道长沙的小吃街在哪吗?
不好意思,我帮您问一下李四,他可能会知道!!

<李四>问:你[狗菲]好,请问你知道长沙的小吃街在哪吗?
不好意思,我帮您问一下狗菲,他可能会知道!!

<李四>说:狗菲说:长沙的小吃街在天心区南门口!!
<张三>说:狗菲说:长沙的小吃街在天心区南门口!!
<刘二>说:狗菲说:长沙的小吃街在天心区南门口!!

狗菲说:长沙的小吃街在天心区南门口!!
"""

函数文档

定义

是用来查看函数相关信息及参数使用的一个文档

查看函数文档

代码语言:javascript
复制
# 查看函数文档
"""
help(函数名)
    此方法会直接输出函数文档的内容

函数名.__doc__
    直接输出显示函数文档的内容元字符串(可以使用print(函数名.__doc__)来解决无格式问题)

"""

help(print)
print(print.__doc__)

编写函数文档

代码语言:javascript
复制
# 编写函数文档
"""
def 函数名():
    """
    # 编写函数文档
    """

"""

def eat():
    """
        this is eat function document
    """
    pass

print(eat.__doc__)

# 参考

“https://www.cnblogs.com/littlefivebolg/articles/9113918.html”

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 递归函数 定义 在函数内调用当前函数本身的函数就是递归函数
  • 函数文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档