0

整数の配列が与えられ、再帰メソッド sum(int[] A,int s, int e) を定義して、配列 A の合計を計算しようとしています。ここで、s と e は開始インデックスと終了インデックスです。指定された配列 int[] A= {3,5,8,9,10} でテストしたい。

私はこれを行う方法について混乱していますが、ここに私がこれまでに持っているものがあります(友人が私がそれを書くのを手伝ってくれたので、ここのコードについて少し混乱しています.少しの説明が大いに役立ちます!):

public static int sum(int[]A,int s,int e) {
   if (s==e)
      return A[e];
else
   return A[5] + sum(A,s+1,e);
4

4 に答える 4

2

@KlasLindbäck の回答に投稿されているように、5 は s である必要があります。

public static int sum(int[]A,int s,int e) {
   if (s==e)
      return A[e];
else
   return A[s] + sum(A,s+1,e);

説明を提供するには:

まず、このメソッドを呼び出すには:

int theSum = sum(myArray, 0, myArray.length-1);

{3,5,8,9,10} 配列について説明します。

sum(A, 0, 4):
return A[0] + sum(A, 1, 4)   //3 + sum(A, 1, 4)

sum(A, 1, 4):
return A[1] + sum(A, 2, 4)   //5 + sum(A, 2, 4)

sum(A, 2, 4):
return A[2] + sum(A, 3, 4)   //8 + sum(A, 3, 4)

sum(A, 3, 4):
return A[3] + sum(A, 4, 4)   //9 + sum(A, 4, 4)

sum(A, 4, 4):
return A[4]                  //10

Now, we know that sum(A, 4, 4) is 10, so therefore sum(A, 3, 4) is 9 + 10 = 19.
Now, we know that sum(A, 3, 4) is 19, so therefore sum(A, 2, 4) is 8 + 19 = 27.
Now, we know that sum(A, 2, 4) is 27, so therefore sum(A, 1, 4) is 5 + 27 = 32.
Now, we know that sum(A, 1, 4) is 32, so therefore sum(A, 0, 4) is 3 + 32 = 35.
于 2013-10-21T15:11:37.763 に答える
1

1文字読み間違えました。は、戻り行にある5必要があります。s

return A[s] + sum(A,s+1,e);
于 2013-10-21T14:36:25.460 に答える