gpt4 book ai didi

java - 递归和辅助方法在查找字符出现时有用吗?

转载 作者:行者123 更新时间:2023-12-01 18:32:38 26 4
gpt4 key购买 nike

所以我之前见过这个问题寻求帮助,但我对此有不同的问题。

问题是:(指定字符在数组中出现的次数)编写一个递归方法,查找指定字符在数组中出现的次数。您需要声明以下两个方法。第二个是递归辅助方法。

public static int count(char[] chars, char ch)

public static int count(char[] chars, char ch, int high)

下面的代码工作得很好:

public class RecursiveCharacterOccurences {
public static int count(char[] chars, char ch) {
return count(chars, ch, chars.length - 1);
}

private static int count(char[] chars, char ch, int index) {
if (index == -1) {
return 0;
}
if (chars[index] == ch) {
return 1 + count(chars, ch, index - 1);
}
return count(chars, ch, index - 1);

}

public static void main(String[] args) {
char[] test = {'a', 'b', 'a', 'c', 'd', 'a', 'e', 'a', 'f', 'g', 'h', 'a', 'i', 'a'};

System.out.println(count(test, 'a'));
}
}

我想知道是否有人可以解释为什么这比下面的代码好得多,在意识到它实际上不是递归之前我已经这样做了,但对我来说,它似乎少了很多代码。

public class RecursiveCharacterOccurences {
public static int count(char[] chars, char ch) {
return count(chars, ch, 0);
}

private static int count(char[] chars, char ch, int count) {
for (char a : chars) {
if (a == ch) {
count++;
}
}
return count;
}

public static void main(String[] args) {
char[] test = {'a', 'b', 'a', 'c', 'd', 'a', 'e', 'a', 'f', 'g', 'h', 'a', 'i', 'a'};

System.out.println(count(test, 'a'));
}
}

谢谢!

最佳答案

第一个代码示例使用递归。第二个代码示例使用迭代(以 for-each 循环的形式)。第一个不一定比第二个更好。就您而言,我假设作业的重点是熟悉递归。就我个人而言,我会使用第二个,因为它更清晰。

关于java - 递归和辅助方法在查找字符出现时有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23451549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com