Java 使用递归选择数组的奇偶元素

Java 使用递归选择数组的奇偶元素,java,recursion,Java,Recursion,我正在做一些编程作业,有点迷路了。该项目将选择listarray的偶数/奇数元素并存储在另一个数组中。它不是每个元素中的偶数,而是元素本身。因此,如果数组的值为“1,2,5,7,9”,并返回偶数元素,它将给出“1,5,9”。还必须使用递归。有谁能给我一个起点或一些建议吗。虽然从2个元素开始,然后从第2个元素开始构建,但不知道如何在第2个过程中添加 public static ArrayList<Integer> even(ArrayList<Integer> list)

我正在做一些编程作业,有点迷路了。该项目将选择listarray的偶数/奇数元素并存储在另一个数组中。它不是每个元素中的偶数,而是元素本身。因此,如果数组的值为“1,2,5,7,9”,并返回偶数元素,它将给出“1,5,9”。还必须使用递归。有谁能给我一个起点或一些建议吗。虽然从2个元素开始,然后从第2个元素开始构建,但不知道如何在第2个过程中添加

 public static ArrayList<Integer> even(ArrayList<Integer> list)
 ArrayList<Integer> evenlist = ListMethods.deepClone(tList);//make copy of list
 if (evenlist.size()<=1)    // The list is empty or has one element
 {
//        return null;// Return the list as is
 }

if 
(evenlist.size()==2)
{
 //return right element
 //call method again
 //add to list
}
公共静态ArrayList偶数(ArrayList列表)
ArrayList-evenlist=ListMethods.deepClone(tList)//复印清单

如果(evenlist.size(),您可以使用一个简单的
循环,如下所示:

for (int i = 0; i < list.size(); i += 2) {
    System.out.println(list.get(i));
}
if (evenList has Even Elements)
    int holderForIntsAtEvenElements = last evenList EVEN element
for(int i=0;i
如果您必须使用递归,下面是您可能采取的步骤的概要(我不会确切地告诉您该做什么,因为您没有尝试过任何操作,这就像家庭作业一样)

  • 取第一个元素并存储它
  • 从列表中删除(新)第一个元素
  • 自称

  • 您可以使用一个简单的
    循环,如下所示:

    for (int i = 0; i < list.size(); i += 2) {
        System.out.println(list.get(i));
    }
    
    if (evenList has Even Elements)
        int holderForIntsAtEvenElements = last evenList EVEN element
    
    for(int i=0;i
    如果您必须使用递归,下面是您可能采取的步骤的概要(我不会确切地告诉您该做什么,因为您没有尝试过任何操作,这就像家庭作业一样)

  • 取第一个元素并存储它
  • 从列表中删除(新)第一个元素
  • 自称
  • 伪代码

    int[] evens,odds;
    
     function categorize(List<Integer> in,int idx)
       if(idx>=in.length)
             return
       int cur = in[idx]
       if(even), add to evens
       else add to odds
        categorize(in,idx+1)
    
    int[]偶数,赔率;
    函数分类(列表中,int-idx)
    如果(idx>=英寸长度)
    返回
    int cur=in[idx]
    如果(偶数),则添加到偶数
    否则会增加胜算
    分类(in,idx+1)
    
    Psuedocode

    int[] evens,odds;
    
     function categorize(List<Integer> in,int idx)
       if(idx>=in.length)
             return
       int cur = in[idx]
       if(even), add to evens
       else add to odds
        categorize(in,idx+1)
    
    int[]偶数,赔率;
    函数分类(列表中,int-idx)
    如果(idx>=英寸长度)
    返回
    int cur=in[idx]
    如果(偶数),则添加到偶数
    否则会增加胜算
    分类(in,idx+1)
    
    这听起来和我刚完成的作业很相似,所以如果是(而且你也在我的课堂上!),我不会告诉你使用我们没有涉及的任何术语,因为我知道,尝试发现一些新的实用知识(超出我们必须做的事情)可能会让人望而生畏

    首先,设置退出条件。如前所述,您必须在现有ArrayList的基础上创建一个新的ArrayList。您将从现有ArrayList中删除项,存储索引为偶数(或奇数)的整数,直到列表为空

    因此,您的退出条件是:

    if (evenList is Empty)
        return evenList;
    
    然后,按照步骤进行操作。我建议确定您开始使用的数组的步骤数是否为奇数偶数,如下所示:

    for (int i = 0; i < list.size(); i += 2) {
        System.out.println(list.get(i));
    }
    
    if (evenList has Even Elements)
        int holderForIntsAtEvenElements = last evenList EVEN element
    
    请注意,我们从最后一个元素开始,因此当您使用递归方法时,这将是添加到新ArrayList的最后一个元素,因此它将按数字顺序排列。您可能会发现这篇文章很有趣:

    然后,我们希望从列表中删除最后一个元素,并再次递归调用该方法

    最后,当我们达到退出条件并开始退出时,我们希望将我们一直存储的INT添加到它们中,例如:

    evenList.add(holderForIntsAtEvenElements);
    return evenList;
    
    这并不能解决一个问题,即如果列表中没有偶数个元素,那么如何处理第一个元素——不过,我会让您尝试解决这个问题!
    这是代码和伪代码的良好组合,希望能帮助您走上正确的道路。

    这听起来与我刚刚完成的家庭作业相似,因此如果是(而且您在我的班上!),我不会告诉您使用我们没有涵盖的任何术语,因为我知道,尝试发现一些新的实用知识可能会让人望而生畏(超出我们必须做的)

    首先,设置退出条件。如前所述,您必须在现有ArrayList的基础上创建一个新的ArrayList。您将从现有ArrayList中删除项,存储索引为偶数(或奇数)的整数,直到列表为空

    因此,您的退出条件是:

    if (evenList is Empty)
        return evenList;
    
    然后,按照步骤进行操作。我建议确定您开始使用的数组的步骤数是否为奇数偶数,如下所示:

    for (int i = 0; i < list.size(); i += 2) {
        System.out.println(list.get(i));
    }
    
    if (evenList has Even Elements)
        int holderForIntsAtEvenElements = last evenList EVEN element
    
    请注意,我们从最后一个元素开始,因此当您使用递归方法时,这将是添加到新ArrayList的最后一个元素,因此它将按数字顺序排列。您可能会发现这篇文章很有趣:

    然后,我们希望从列表中删除最后一个元素,并再次递归调用该方法

    最后,当我们达到退出条件并开始退出时,我们希望将我们一直存储的INT添加到它们中,例如:

    evenList.add(holderForIntsAtEvenElements);
    return evenList;
    
    这并不能解决一个问题,即如果列表中没有偶数个元素,那么如何处理第一个元素——不过,我会让您尝试解决这个问题!
    这是代码和伪代码的良好组合,希望能帮助您走上正轨。

    您必须在2个数组中同时存储偶数和奇数元素还是仅存储偶数?您必须在2个数组中同时存储偶数和奇数元素还是仅存储偶数?谢谢Andrew。我在您的班上(让我们看看您是否能猜出是谁)。我想我正在努力将递归应用到其他情况中,正如我在书信笔记和书籍中所理解的那样。可能需要更多的实践!!!@user1836661:就目前情况而言,你的身份将永远是个谜!我自己也不太容易找到递归!我不确定你是否已经完成了这项工作,但如果没有,请尝试一下看看这篇文章——这是我做这件事的最初方法:我也用另一种方式看它,通过递归从数组中选择最后2个元素,取第一个或最后一个数字(奇数/偶数)如果您以前没有使用过Eclipse调试器,那么您应该研究一下它——如果您双击左边的蓝色条