为什么递归代码没有正常工作? [关闭!]

时间:2016-03-21 01:38:21

标签: java recursion

所以我试图创建一个程序,在一个字符串中找到一个单词,或者基本上是一个单词中的单词。我的思考过程是检查每个子字符串是否与单词匹配,并使用递归来一次减少一个字符串。我花了很多时间在它上面,但它没有工作,我真的不明白为什么。请帮帮忙,我现在对此感到非常沮丧。

public static boolean yodo(String sen, String word)
{
    String sentence = sen;
    String wordy = word;
    int wordLength = word.length();
    int senLength = sentence.length();

    boolean result = false;

    if ((sentence.substring(0, wordLength)).equals(wordy))
    {
        result = true;
    }
    else 
    {

    yodo(sentence.substring(1), wordy);
    }

    return result;


}

2 个答案:

答案 0 :(得分:1)

您的代码无法正常工作的原因是您忽略了递归调用的结果:

yodo(sentence.substring(1), wordy);

您应该在返回之前将其分配给result,或者立即返回,并完全删除result的声明。

此外,当false超过wordy时,您需要基本案例才能返回sentence。否则,当sentence变为空String时,您的代码就会崩溃。

答案 1 :(得分:0)

首先,如果长度为0,则返回false。

其次,你需要返回yodo的值,而不是简单地调用它。

  

返回yodo(sentence.substring(1),wordy);

试一试。