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

我用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] == 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);
}