自顶向下递归算法的麻烦

时间:2017-04-18 02:24:50

标签: 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_quicker(InWord):
        wordC+=1
        if(OutWord == q):
            return q
        wordS.append(q)

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

非常感谢任何帮助/问题。

1 个答案:

答案 0 :(得分:0)

<强>分析

您的代码中没有任何地方可以形成列表以返回。您创建列表的地方是附加到wordS,但是您永远不会返回此列表,并且您的递归调用只传递该列表中的一个元素(单个单词)。

正如jasonharper已经指出的那样,你的最后一个循环可以迭代一次并返回递归给它的任何东西,或者它可以从结尾掉下来并返回(而不是&#34;没有&#34 ;)

代码中还有另外两个回复:一个返回 False ,另一个返回 q ,但前提是q与 OutWord具有相同的值

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

REPAIR

我担心我不确定如何解决这个例程你的方式,因为你还没有真正描述过你希望这段代码如何执行您描述的高级任务。缩写的变量名称隐藏了它们的用途。 wordC 是一个计数器,其唯一的功能是保存从 get_words_quicker 返回的列表的长度 - 这可以更轻松地完成。

如果您可以清理代码,将数据流和/或文档改进为只显示一两次逻辑中断的内容,也许我们可以修复剩余的问题。目前,我犹豫不决 - 你有我的解决方案,而不是你的