Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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_Java - Fatal编程技术网

学习递归Java

学习递归Java,java,Java,下面的方法计算什么?假设该方法最初是在i=0的情况下调用的 public int mysteryMethod(String a, char b, int i) { if (i == a.length()) return 0; else if (b == a.charAt(i)) return mysteryMethod(a, b, i + 1) + 1; else return mysteryMethod(a, b, i +

下面的方法计算什么?假设该方法最初是在i=0的情况下调用的

public int mysteryMethod(String a, char b, int i) {
    if (i == a.length())
        return 0;
    else if (b == a.charAt(i))
        return mysteryMethod(a, b, i + 1) + 1;
    else
        return mysteryMethod(a, b, i + 1);
}

我对递归感到困惑。在第二个return语句中,+1在做什么。

在第二个if语句中,+1在计数。所以这里有一个提示

什么是+1计数

停止阅读,继续尝试。然后继续阅读下一个提示。

要回答上述问题,您应该看看+1将发生的条件。这是当
b
等于
a.charAt(i)

那么这对于计数意味着什么呢

停止阅读,继续尝试。继续阅读答案。


函数计算字符串
a
中出现
b
的次数。在每次迭代中,它检查迭代(第i个)位置是否等于
b
。如果是这样,将计数增加1,并从下一个位置重复该功能。否则,请继续检查下一次迭代。

我想您不希望我们给出实际答案,而只是一个提示?是的,关于递归的任何帮助或解释都会很好:)尽量避免将递归函数“展开”为步骤的诱惑,从而在您的头脑中将其转变为命令式编程风格。相反,试着把函数看作是一个定义,而不是一个配方。从什么而不是如何的角度来思考。我建议你在很多很多弦上尝试一下。你很快就会发现它的作用。他们会告诉你为什么。