首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归/递归跟踪

递归/递归跟踪
EN

Stack Overflow用户
提问于 2021-04-02 21:34:18
回答 1查看 35关注 0票数 0

我试图查看这个函数的递归跟踪,但是为什么我要获得“无”输出?

代码语言:javascript
运行
复制
def fnc(k):
    if k == 0:
        return 0
    fnc(k-1)
    fnc(k-1)
    fnc(k-1)
    fnc(k-1)
EN

回答 1

Stack Overflow用户

发布于 2021-04-02 21:45:24

实际上,通过手工评估代码中的小参数,您的问题非常容易识别。假设您将k = 1传递给fnc

代码语言:javascript
运行
复制
def fnc(k):
    # k == 1 != 0, so we skip the return
    if k == 0:
        return 0

    # Now we call fnc four times with k - 1 = 0 as an argument
    # All four function calls will return 0
    # But we don't use the returned value in any way (no assignment, no return)
    fnc(k - 1)
    fnc(k - 1)
    fnc(k - 1)
    fnc(k - 1)

    # The function ends without returning anything, therefore the return value is None

我不知道您想要实现什么,但是如果您希望返回大小写值,则可以这样做:

代码语言:javascript
运行
复制
def fnc(k):
    if k == 0:
        return 0

    return fnc(k-1)

请比较这两种功能,也许可以手动完成,并试着理解到底是怎么回事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66925499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档