学习递归Java
下面的方法计算什么?假设该方法最初是在i=0的情况下调用的学习递归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 +
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,并从下一个位置重复该功能。否则,请继续检查下一次迭代。我想您不希望我们给出实际答案,而只是一个提示?是的,关于递归的任何帮助或解释都会很好:)尽量避免将递归函数“展开”为步骤的诱惑,从而在您的头脑中将其转变为命令式编程风格。相反,试着把函数看作是一个定义,而不是一个配方。从什么而不是如何的角度来思考。我建议你在很多很多弦上尝试一下。你很快就会发现它的作用。他们会告诉你为什么。