使用递归时,我意识到我不确定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;
}
答案 0 :(得分:6)
您似乎错过了递归步骤的全部内容。
改变这个:
someFunc(a, b, nbr-1);
return false;
对此:
return someFunc(a, b, nbr-1);
顺便说一下,使用完全相同的数据(字符串a
和b
)递归调用此函数是毫无意义的。
您必须使用其他内容来调用此函数(可能是a
和b
的子字符串。
答案 1 :(得分:1)
如果没有进入第一个false
,您的方法将始终返回if
。你需要改变这个:
someFunc(a, b, nbr-1);
return false;
到
return someFunc(a, b, nbr-1);
也许如果你用你究竟要做的事情更新你的问题,你会得到一个更有针对性的答案,这将有助于你更好地理解递归。