当前位置: 首页 > 知识库问答 >
问题:

递归函数,它有一个整数数组,它的大小作为参数,如果数组元素的总和是偶数,它将返回true?

劳灵均
2023-03-14

如何创建一个函数,该函数将整数数组和数组长度作为参数,如果数组元素的和为偶数,则返回true,否则返回false?

如何在不使用任何静态变量的情况下执行此操作?

我尝试过制作一个代码来检查当前是否为奇数,而前一个是偶数将递归返回 false,否则将递归返回 true,这个想法是基于数学公理,即只有偶数加奇数等于奇数,其他所有组合都是偶数。

public static boolean q3(int[] arr, int index) {
    if (index == 0) {
        return arr[index] % 2 == 0;
    }
    if (arr[index] % 2 == 0) {//if current is even 
        if (!q3(arr, index - 1)) {//even plus odd = odd
            return false;
        } else
            return true;  //every other combo equal true 
    } else if (q3(arr, index - 1)) {//if current is odd 
        return true;
    } else {
        return false;
    }

}

共有2个答案

都飞跃
2023-03-14

这里有一个递归方法可以完成这项工作。我试着让代码可读。

这个想法是,通过加法得到偶数的唯一时间是

  1. 两个数字都是偶数
  2. 两个数字都是奇数

在每次递归调用时,我们检查将数字与前一个计算值相加是否使其为偶数或奇数。

public static boolean isSumEven(int arr[], int length){
        if(length == 0){
            return true;
        } else {
            boolean sumPreviousElemsEven = isSumEven(arr, length - 1);
            boolean currentElemEven = arr[length-1]%2 == 0 ? true : false;
            if(sumPreviousElemsEven && currentElemEven || !sumPreviousElemsEven && !currentElemEven){
                return true;
            } else {
                return false;
            }
        }
    }
桂高义
2023-03-14

我写了两个版本,一个有递归,另一个没有递归

import java.util.Arrays;

public class MyClass {
    public static void main(String args[]) {

      int[] arr={5, 3, 1};
      System.out.println("sum of "+Arrays.toString(arr)+" is " + size_ispair_rec(arr, arr.length));
      
    }
    
    public static boolean size_ispair_rec(int[] arr, int size){

        if(size-1 == 0){
            return arr[size]%2==0;
        }
        
        return !((arr[size-1]%2 == 0) ^ size_ispair_rec(arr, size-1));

    }
    
    public static boolean size_ispair(int[] arr, int size){
        int sum=0;
        for(int i=0; i<size; ++i){
            sum+=arr[i];
        }
        return sum%2 == 0 ? true : false;
    }
}
 类似资料:
  • 为什么在这种情况下两个数组的作用不同?

  • 我是一个新手程序员 我正在研究一个使用递归函数的问题。虽然我可以理解要点,但有一个不清楚的问题,我无法在调试过程中立即破译。感谢您对我的问题的帮助。 这个问题的概念(合并排序)非常简单,但我对递归函数的一般工作方式感到困惑。下面是我正在处理的程序(来自佐治亚理工学院关于Python的课程): 问题:当程序执行到这行时会发生什么< code > left = merge sort(lst[:midp

  • 我接受了一次采访,被问到一个问题,我想了解解决方案。 创建一个递归函数,该函数返回给定长度的数组的可能组合数,这些数组可以由非重复连续整数数组组成。 f(数组,长度)=组合 数组=[0,1,2,3] 长度=2 组合=10(所有组合:[0,0][0,1][0,2][0,3][1,1][1,2][1,3][2,2][2,3][3,3]) 请注意,允许使用[0,0],但不允许使用[1,0],因为定义了[

  • 问题内容: 我有一个我要为类创建的程序,该程序使用递归返回数组中所有整数的总和。到目前为止,这是我的程序: 但是,我相信我得到了三个都相关的错误,但是我不知道为什么它会找到一种null类型: 问题答案: 该解决方案比看起来简单,请尝试以下操作(假设数组的长度为非零): 这样称呼它:

  • 我需要一些帮助在Java:我有一个函数签名,我不能改变,我的函数需要递归和返回字符串数组没有任何选项添加到签名。 这是我的签名: 该函数在TRIE结构中查找相似的单词,在它们之间有K个字母变化的差异。 例如-在单词“bike”和k=2的TRIE中,该函数将返回一个(包含nice和nine)。 我不是在寻找解决方案,只是为了一个返回字符串数组的方法。 **我用我收到的签名编写了一个函数作为包装器,但

  • 我试图使用递归编写一个方法subsetWithSum(ArrayList numbers,int sum),该方法获取整数的ArrayList和整数的和,并返回一个ArrayList,其中包含给定数字(提供的ArrayList)中的数字,这些数字的和等于和。不必返回多个组合,如果没有这样的子集,则应返回null。但我的代码只为每个返回null`` 这是我的方法代码: 下面是我对该方法的主要调用: