Python 自顶向下递归算法的问题

Python 自顶向下递归算法的问题,python,search,recursion,Python,Search,Recursion,我正在尝试创建单词链,但无法绕过递归搜索。 我想返回一个单词列表,其中列出了到达目标单词所需的单词 get_words_quicker返回只需更改一个字母即可生成的单词列表 def dig(InWord, OutWord, Depth): if Depth == 0: return False else: d = Depth - 1; wordC = 0; wordS = []; for q in get_words_qui

我正在尝试创建单词链,但无法绕过递归搜索。 我想返回一个单词列表,其中列出了到达目标单词所需的单词 get_words_quicker返回只需更改一个字母即可生成的单词列表

def dig(InWord, OutWord, Depth):
    if Depth == 0:
        return False
    else:
        d = Depth - 1;
    wordC = 0;
    wordS = [];
    for q in get_words_quicker(InWord):
        wordC+=1
        if(OutWord == q):
            return q
        wordS.append(q)

    for i in range(0,wordC):
        return dig(wordS[i],OutWord,d)

如有任何帮助/问题,将不胜感激

分析

您的代码中没有任何地方可以形成要返回的列表。创建列表的一个地方是在单词后面追加,但您从未返回此列表,递归调用只传递该列表中的一个元素(单个单词)

正如jasonharper已经指出的那样,您的最终循环可以迭代一次并返回递归给它的任何内容,或者它可以从末尾掉下来并返回None(而不是“nothing”)

代码中还有两个其他返回:一个返回False,另一个将返回q,但前提是q的值与的值相同

由于没有使用结果或以任何方式更改返回值的代码,因此代码返回值的唯一可能性是、和外部

修理

恐怕我不确定如何按照您的方式修复此例程,因为您还没有真正描述您打算如何使用此代码执行您描述的高级任务。缩写的变量名隐藏了它们的用途wordC是一个计数器,它的唯一功能是保存从快速获取单词返回的列表的长度,这可以更容易地完成


如果您可以清理代码,改进数据流和/或文档,使其只显示一个或两个逻辑中断,那么也许我们可以修复剩余的问题。就目前情况而言,我不敢尝试——你会得到我的解决方案,而不是你的。

问题是什么?
因为我在范围内(…):return…
从根本上被打破了-这个循环不能重复多次-如果它重复零次,你就会从底部掉下来,而不会返回任何东西。