Java 关于递归的问题,试图安排最大数量的事件

Java 关于递归的问题,试图安排最大数量的事件,java,recursion,Java,Recursion,我正在使用递归,试图更好地使用它。我当前的活动是尝试编写一个递归方法,该方法可以生成可以调度的最大事件数。到目前为止,我的方法如下: public int maxEvents(int n, int[] Start) { if(n<=0) return 0; if(n==1) return 1; else return maxEvents(n-1, Start) + maxEvents(Start[n]-1, Start); } public int maxEvents(i

我正在使用递归,试图更好地使用它。我当前的活动是尝试编写一个递归方法,该方法可以生成可以调度的最大事件数。到目前为止,我的方法如下:

 public int maxEvents(int n, int[] Start) {
  if(n<=0) return 0;
  if(n==1) return 1;
  else return maxEvents(n-1, Start) + maxEvents(Start[n]-1, Start);
 }
public int maxEvents(int n,int[]开始){
如果(n这是否有效

return Math.max(maxEvents(n-1, Start), 1 + maxEvents(Start[n]-1, Start))
我们的想法是,您将分为两种相互排斥的情况:一种是不包括第n个事件,另一种是包括第n个事件。在这两种情况中,您必须选择较大的一种。因此,将这两种情况相加是不正确的-取最大值是正确的方法。但您还必须将1添加到第二个选项中,以考虑包括第n个事件第次活动。

这有效吗

return Math.max(maxEvents(n-1, Start), 1 + maxEvents(Start[n]-1, Start))

我们的想法是,您将分为两种相互排斥的情况:一种是不包括第n个事件,另一种是包括第n个事件。在这两种情况中,您必须选择较大的一种。因此,将这两种情况相加是不正确的-取最大值是正确的方法。但您还必须将1添加到第二个选项中,以考虑包括第n个事件第次事件。

在第一个示例中,n=3。因此数组中必须至少有四个元素。Otherway Start[n]-将引发异常。可能是您遇到了麻烦-您认为在java中有零基索引数组,但没有。在第一个示例中,n=3。所以数组中必须至少有四个元素。Otherway Start[n]-将引发异常。可能,这会给您带来麻烦-您认为java中有0-0基索引数组,但没有。