递归 - 使用100个整数制作数组列表

时间:2014-12-02 18:55:07

标签: java arrays recursion arraylist

我已经完成了家庭作业的第一部分而且我开始陷入困境(部分地对指令感到困惑。我目前有一些完整的代码:

import java.util.*;
import java.util.ArrayList;


public class ListMethods
{
 public static ArrayList<Integer> makeList(int n)

 {

 ArrayList<Integer> tempList = new ArrayList<Integer>();

 if (n <= 0) // The smallest list we can make

 {
     return tempList;
 }
 else // All other size lists are created here

 {

 }
 return tempList;

 }
}



public class ListMethodRunner
 {
     public static void main(String[] args)
     {
         ArrayList<Integer> tempList = ListMethods.makeList(0);
         if(tempList.size() == 0)
         {
         System.out.println("The list is empty.");
         }
         else
         {
             for(Integer i: tempList)
             {
                 System.out.println(i);
             }
         }
     }
}

现在的目标是使用这些指令:每当方法调用自身时,该方法都是递归的。通过调用相同 再次,使用针对较小实例的解决方案来解决问题的每个实例。从逻辑上讲,这个 过程必须停在某个地方。在我们的ArrayList问题的情况下,它在我们调用时停止 makeList(0)。这是我们在实验1.1中手工解决的问题。 每当我们调用makeList(n - 1)时,我们都会收到一个带有1,2,3,...,n - 1的ArrayList。我们怎样才能使用 生成一个带有1,2,3,...,n的ArrayList? 将该代码添加到else块并完成makeList方法。使用测试工具测试代码 通过更改传递给makeList的参数。你能列出100个项目吗?

我需要制作一个包含100个项目的列表,但我不知道如何使用(n-1)100个项目来完成此操作。如果我理解正确,看看我们如何使用while循环,我会使用像(int i = 0,i&lt; 100,i ++)这样的东西吗?

2 个答案:

答案 0 :(得分:1)

makeList(n)列出了n个元素。如果您可以列出n-1个元素,则可以向其添加n。幸运的是,方法可以做到这一点:makeList使用n-1进行调用。

答案 1 :(得分:0)

递归涉及该方法将调用自身,因此您的第一个提示是在makeList内您必须调用makeList。 通过循环通常是循环的替代方案,你很可能期望解决这个问题,而不仅仅是避免&#34;而#34;循环,但任何类型的循环。