return语句如何在递归中起作用?

时间:2014-10-11 18:59:51

标签: java recursion return

使用递归时,我意识到我不确定return语句是如何工作的。当target.contains(key)返回true时它是否停止并返回true,或者它是否会丢失并返回false,因为下面的行?该方法的先前迭代是否已完成,以便它返回false?

程序创建密码并调用此方法以检查密码是否包含必需字段之一,例如大写字母,符号或数字。它使用4个独立的来源进行调用,然后用它们告诉程序保留密码或创建一个新密码,如果它不符合要求的标准。我已经完成了这个有趣的程序来刷新我对Java的记忆,它不是任何人都会使用的真正程序。

private static boolean containsKeyword(String target, String source, int placement){
    String key = String.valueOf(source.charAt(placement));
    if(target.contains(key))
        return true;

    if(placement==0)
        return false;
    containsKeyword(target, source, placement-1);
    return false;
}

2 个答案:

答案 0 :(得分:6)

您似乎错过了递归步骤的全部内容

改变这个:

someFunc(a, b, nbr-1);
return false; 

对此:

return someFunc(a, b, nbr-1);

顺便说一下,使用完全相同的数据(字符串ab)递归调用此函数是毫无意义的。

您必须使用其他内容来调用此函数(可能是ab的子字符串。

答案 1 :(得分:1)

如果没有进入第一个false,您的方法将始终返回if。你需要改变这个:

someFunc(a, b, nbr-1);
return false; 

return someFunc(a, b, nbr-1);

也许如果你用你究竟要做的事情更新你的问题,你会得到一个更有针对性的答案,这将有助于你更好地理解递归。