Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java return语句在递归中是如何工作的?_Java_Recursion_Return - Fatal编程技术网

Java return语句在递归中是如何工作的?

Java return语句在递归中是如何工作的?,java,recursion,return,Java,Recursion,Return,当使用递归时,我意识到我不确定return语句是如何工作的。当target.contains(key)返回true时,它会停止并返回true吗?还是因为下面的行,它会掉出来并返回false?该方法之前的迭代是否已完成,因此返回false 程序创建密码,并调用此方法检查密码是否包含一个必填字段,如大写字母、符号或数字。它由4个独立的来源调用,然后它们被用来告诉程序保留密码,或者在密码不符合要求的标准时创建一个新的密码。我做这个程序是为了好玩,以刷新我对Java的记忆,它不是任何人都会使用的真正的程

当使用递归时,我意识到我不确定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;
}

您似乎忽略了递归步骤的全部要点

更改此项:

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

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

顺便说一下,使用完全相同的数据递归调用此函数(字符串
a
b
)是没有意义的


必须要调用此函数的其他内容(可能是
a
b
的子字符串)。

如果方法未进入第一个
if
,则始终返回
false
。您需要更改以下内容:

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


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

它的工作原理与非递归场景中的工作原理完全相同。
a
b
的可能重复是字符串,在你的例子中,比较是相关的,因为无论递归有多深,它都会产生完全相同的结果。您正在计算的函数不是递归处理的合适候选者。你需要一个例子,将a和/或b分解为更简单的情况,这个例子才有意义。我已经用实际代码更新了这个问题,因为它显然是相关的…@Alvar:好的,我只能回答你发布的…@Alvar:好的,那么我回答的第一部分解释了这个问题。。。不客气:)@Alvar:BTW,如果你不断改变你的问题,这个答案可能变得无关紧要了…@Alvar:嗯,你刚刚根据这里给出的一个或多个答案修复了这个问题,基本上使它们过时和无关紧要了。本论坛的全部目的是为问题提供相应的答案,而不是让人们提问,然后将其更正为答案。现在没有人知道原来的问题是什么,因此没有人可以在将来搜索这个问题并利用它!!!!!我不想和你争论,但我猜人们会否决你的问题,因为你已经对它进行了几次重大的修改。如果它完成了,就会进入第二个问题,这也是第二个ig的要点,马诺斯解决它的速度更快。。但是谢谢。