代替迭代的槽循环,递归你写的函数调用自身(因此需要一个第三参数,这是你在阵列中具有的当前位置)。
您只需从索引0开始,如果当前字符不是char,则返回0,如果是,则返回1。然后,您必须对数组的其余部分执行相同的操作。当到达结尾(currIndex == arr.length
)时,返回0作为求和的起始值。
public static void main (final String[] args) {
char[] foo = {'f', 'o', 'o', 'b', 'a', 'r'};
System.out.println (count (foo, 'o')); // 2
System.out.println (countRecursive (foo, 'o')); // 2
}
public static int countRecursive (final char[] arr,
final char ch) {
return countRecursive (arr, ch, 0);
}
public static int countRecursive (final char[] arr,
final char ch,
final int currIndex) {
if (currIndex == arr.length) {
return 0;
} else {
return (arr[currIndex] == ch ? 1 : 0) + countRecursive (arr, ch, currIndex + 1);
}
}
@kkaosninja他isn't询问当前发生的递归,他要我们只要我得到它改写成递归这一点。 – SomeJavaGuy
欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布准则。 [最小,完整,可验证的示例](http://stackoverflow.com/help/mcve)适用于此处。在您发布您的尝试并准确描述问题之前,我们无法有效帮助您。 StackOverflow不是一个编码或教程服务。我没有看到在这里写这个递归。 – Prune