python - Python 中的递归函数不返回任何值

标签 python recursion

我有这段代码,由于某种原因,当我尝试返回路径时,我得到 None相反:

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)

有办法解决这个问题吗?

最佳答案

需要返回递归结果:

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

否则函数会在执行该语句后结束,结果是 None正在被退回。

您可能想要删除 else:并始终在最后返回:

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)

因为如果rqfile in str(os.path.join(*path)) False 然后你就结束你的函数而没有 return以及。如果在这种情况下递归不是正确的选择,但返回 None不是,您也需要处理这种边缘情况。

关于python - Python 中的递归函数不返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60425427/

相关文章:

python - + : 'WindowsPath' and 'str' 不支持的操作数类型

c# - Python 与 C# 中的递归行为 - 奇怪的结果

javascript - 那我们能得到当前的 promise 吗?

python - 在 Python 中实现快速排序

java - 递归创建一棵树

python - 从距原点给定距离的图中查找路径的所有组合

python - 如何用python查找字符串中多个子字符串的索引?

javascript - 尝试打开文本文件时,Python 脚本抛出非常奇怪的错误

python - RGB 图像中最主要的颜色 - OpenCV/NumPy/Python

c - 更新移动计数(计数器)- 汉诺塔 - C 程序