Java 如何将此代码编写为递归?
我用Java编写了这段代码,用于计算数组中的字符数。但是,我没有使用递归。有人能把它改写成递归吗? 如何转换循环的Java 如何将此代码编写为递归?,java,recursion,Java,Recursion,我用Java编写了这段代码,用于计算数组中的字符数。但是,我没有使用递归。有人能把它改写成递归吗? 如何转换循环的和计数+ public int count(char[] arr, char ch) { if (arr == null) { return -1; } int count = 0; for (int i = 0; i < arr.length; i++) { if (arr[i
和计数+
public int count(char[] arr, char ch) {
if (arr == null) {
return -1;
}
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == ch) {
count++;
}
}
return count;
}
public int count(char[]arr,char ch){
如果(arr==null){
返回-1;
}
整数计数=0;
对于(int i=0;i
对于递归,您编写的函数必须调用自身,而不是通过循环进行迭代(因此需要第三个参数,即数组中的当前位置)
只需从索引0开始,如果当前字符不是您的字符,则返回0;如果当前字符不是您的字符,则返回1。然后,必须对数组的其余部分执行相同的操作。当到达末尾(currendex==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他不是在问当前正在发生的递归,他希望我们将其重写为递归,就我所知。欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布您的尝试并准确描述问题之前,我们无法有效地帮助您。StackOverflow不是编码或教程服务。我看不出有人试图把它写成递归。你真的建议用一个复杂度为O(n^2)的算法来完成这样的任务吗?它可能效率不高,但它的形状与FP语言一样。将有一个字符列表而不是数组。
public int count(char[] arr, char ch) {
if (arr == null || arr.length ==0) {
return 0;
}
char[] oneSmallerArr = new char[arr.length-1];
System.arraycopy(arr, 1, oneSmallerArr, 0, oneSmallerArr.length);
return (arr[0] == ch ? 1 : 0) + count(oneSmallerArr, ch);
}