给定一串单词,你能构造一个单词

时间:2013-02-23 21:35:27

标签: java recursion

我给了一个开头词,一个目标词和一个我允许使用的字符串数组。我应该使用递归来返回我是否可以使用给定字符串数组中的至少一个单词在第一个单词和最后一个单词之间构造一个字梯。

递归对我来说非常具有挑战性,所以我真的迷失/混淆了如何解决这个问题。

3 个答案:

答案 0 :(得分:0)

递归包括从内部调用函数。您需要始终指定退出条件(或者您将获得堆栈溢出)。其余的取决于您的需求:

class Myclass {
    public static int doSomething(int a) {
        if (a < 10) {
             doSomething(a + 1);
        }
    }

    public static void main(String [] args) {
        System.out.printl(Myclass.doSomething(0));
    }
}

答案 1 :(得分:0)

对于每个单词,将其链接到所有可能的兄弟姐妹的列表。然后从第一个开始构建所有可能的梯子的树。如果你击中目标返回两者之间的路径。您可以在导航树时使用递归。

答案 2 :(得分:0)

@ user2103249说的是什么。对于这样的事情,你的递归例程可能应该返回成功的路径。大概的顺序:

public String[] canFindPath(String[] pathSoFar) {
    for (characters in last word of pathSoFar) {
        for (all possible modifications of the character) {
            if (modifying the character produces a word in the word list but not already in pathSoFar) {
                Create new pathSoFar copy, with the one additional word;
                if (additionalWord == goalWord) {
                    return newPathSoFar;
                }
                String[] result = canFindPath(newPathSofar);
                if (result != null) return result;
             }
         }
     }
     return null;
}

虽然有十几种不同的方法。

最初在单词列表中构建一个从wordA到wordB的可能转换的映射可以加快速度,因为您可以快速索引可能性,而不必在每个步骤中搜索每个步骤。