我已经完成了家庭作业的第一部分而且我开始陷入困境(部分地对指令感到困惑。我目前有一些完整的代码:
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 ++)这样的东西吗?
答案 0 :(得分:1)
makeList(n)
列出了n
个元素。如果您可以列出n-1
个元素,则可以向其添加n
。幸运的是,有方法可以做到这一点:makeList
使用n-1
进行调用。
答案 1 :(得分:0)
递归涉及该方法将调用自身,因此您的第一个提示是在makeList
内您必须调用makeList
。
通过循环通常是循环的替代方案,你很可能期望解决这个问题,而不仅仅是避免&#34;而#34;循环,但任何类型的循环。