首页 >后端开发 >Python教程 >为什么我的递归 Python 函数不返回任何内容而不是预期的路径?

为什么我的递归 Python 函数不返回任何内容而不是预期的路径?

Susan Sarandon
Susan Sarandon原创
2024-11-14 21:22:02778浏览

Why Does My Recursive Python Function Return None Instead of the Expected Path?

Python 中的递归函数和返回 None [重复]

在 Python 中,递归函数是解决复杂问题的有效工具。但是,了解递归机制以避免意外结果非常重要。

考虑以下代码片段:

def get_path(dictionary, rqfile, prefix=[]):
    for filename in dictionary.keys():
        path = prefix + [filename]
        if not isinstance(dictionary[filename], dict):
            if rqfile in str(os.path.join(*path)):
                return str(os.path.join(*path))
        else:
            get_path(directory[filename], rqfile, path)

此函数旨在返回嵌套中特定文件的路径字典。然而,执行时会出现问题,它返回 None 而不是预期的路径。

问题在于递归调用的处理。为了正确实现递归,需要将递归调用的结果返回给调用函数。在这种情况下,应该在 else 块内完成:

else:
    return get_path(directory[filename], rqfile, path)

这确保函数将结果传播回递归链,最终将路径返回给调用者。

或者,删除 else 块并始终在 for 循环末尾返回也可以解决该问题:

for filename in dictionary.keys():
    path = prefix + [filename]
    if not isinstance(dictionary[filename], dict):
        if rqfile in str(os.path.join(*path)):
            return str(os.path.join(*path))
    return get_path(directory[filename], rqfile, path)

通过始终返回递归结果,该函数现在可以正确检索并返回所需文件的路径。

以上是为什么我的递归 Python 函数不返回任何内容而不是预期的路径?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn