如何退出递归

时间:2016-11-23 14:09:41

标签: c# .net recursion

我的代码如下,问题是发现是假的 它找到了密码并转到msg.setFrom(new InternetAddress(SystemProperty.applicationId.get() + "@appspot.gserviceaccount.com")); ,但它一直在运行 如何退出递归并停在return true;

return true;

3 个答案:

答案 0 :(得分:5)

之前添加一个回报
MatchPassword(chars, maxLen, nextGuess, actualPassword);

该行应该是:

return MatchPassword(chars, maxLen, nextGuess, actualPassword);

那样你基本上就会冒泡"结果备份调用堆栈

答案 1 :(得分:3)

应该是:

 else if (Match...) return true;

甚至:

    if (nextGuess == actualPassword || Match...)
        return true;

因为你想在当前失败时继续迭代,如果找到了什么就停止。

答案 2 :(得分:2)

您永远不会对递归调用的结果做任何事情:

    if (nextGuess == actualPassword)
        return true;
    else
        MatchPassword(chars, maxLen, nextGuess, actualPassword); //Here

然后,您的代码会在最终的return false

中不断下降

你应该像这样返回递归调用的结果

    if (nextGuess == actualPassword)
        return true;
    else
        return MatchPassword(chars, maxLen, nextGuess, actualPassword);