【问题标题】:Count repeated elements in Java without using loops or imports在不使用循环或导入的情况下计算 Java 中的重复元素
【发布时间】:2022-01-07 12:36:24
【问题描述】:

出于培训目的,我尝试编写一个程序来计算给定数字在给定整数数组中出现的频率。然后检查数字是偶数还是奇数。不使用任何导入或循环。我试图以递归方式解决它。 例如:

(3, new int[]{3,3,4,5,3,3,2,1})

有 4 个三,所以程序应该检查 4 是偶数还是奇数。

经过几天的编码和不工作的代码,我决定在这里问: 有什么解决方案吗?

public static int evenNumberOf(int num, int[] numarr) {

int i = 0 ;
        int counter = 0;
        if(a == null || a.length == 0) {
            return false;
        } else {
            if(a[i] == a.length -1 ) {
                if(counter % 2 == 0) {
                    System.out.println("true");
                    return true;
                    
                } else System.out.println("false");
                    return false;
                
            } else {
            if(a[i] == n) {
                counter++;
                i++;
                return evenNumberOf(n,a) ;
            } else {
                i++;
                return evenNumberOf(n,a) ;

【问题讨论】:

  • 您能否分享您编写的代码,以便我们尝试帮助您找出问题所在?
  • 对不起,我会这么做的!
  • 请发布您的完整代码。 an 在哪里声明?当你的函数说它返回int时,你如何返回true? “不工作”是什么意思?但是您的问题似乎是每次调用函数时都从数组的开头开始搜索。
  • 你怎么能在一个应该返回 int 的方法中 return falsereturn true

标签: java if-statement recursion


【解决方案1】:

提示:

如果您尝试递归地执行此操作,您可以通过分而治之的方式快速执行此操作。将数组分成两半,计算每个子数组并组合结果。确保正确处理空数组/单元素数组的基本情况。

【讨论】:

  • 也许我理解错了,但我认为 op 只想计算给定数字的重复次数(示例中为 3),这可以很容易地递归完成。
  • 啊,我明白了,这将是一个更容易的任务。我也误会了。
  • 是的,很抱歉造成误解。我经常无法用英语表达我想说的话。
【解决方案2】:

试试这个:

public static void main(String[] args) throws Exception{
    System.out.println(evenNumberOf(2, 0, new int[]{2,0,3,7,6,11,1,2}, 0));
}

//arr should not be empty, index and count >= 0
public static int evenNumberOf(int num, int index,int[]numarr, int count) {
    if(index >= numarr.length) return count;
    if(numarr[index] == num ) {
        count++;
    }
    return evenNumberOf(num, ++index, numarr, count);
}

您可以添加一个辅助方法以使调用更简单:

public static int evenNumberOf(int num, int[] numarr) {
    return evenNumberOf(num, 0, numarr,0);
}

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多