递归函数在Python中不返回任何值

发布于 2021-02-02 23:17:29

我有这段代码,由于某种原因,当我尝试返回路径时,我得到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)

有办法解决吗?提前致谢。

关注者
0
被浏览
134
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你需要返回递归结果:

    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递归不是正确的选择,而在返回则不是正确的选择,那么你也需要处理这种边缘情况。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看