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