2016-05-18 1 views
1

この問題は、再帰を使用して解決する必要があります。配当と除数をパラメータとして再帰を使用してint []除算メソッドを作成するにはどうすればよいですか?

「else」の後にコードを使用して、分けることができる回数をカウントするint tempを使用して商を見つけようとしました(temp = dividend - divisor)。

int rは商であると考えられますが、division()はintではなく配列であるため、再帰を適用することはできません。私はresult(0)の中にdivision()を挿入しようとしましたが、同じことですが、戻り値はintではなく配列です。

結果は、2つの要素、すなわち除算の商と剰余の配列です。

私は再帰を練習してきたが、私は再帰のこのミックスで失われたと私はおそらくforループでこれを解決することができる配列

が、私が言ったように、再帰を使用しなければならないんです。

elseとreturnの間のコードのみを変更する必要があります。これが簡単であれば、私はそれを見ません。

私は以前に答えを探していましたが、私が見つけた答えは返り値であり配列ではありません。

これは(あなたがメインで見ることができるように、テストの配当は13で、除数が3である)私の失敗したテストとコードです:

public class Main{ 

    /* 
    * Returns an array with the quotient and remainder of the 
    * integer division 
    * 
    * @param dividend a positive int 
    * @param divisor a positive int 
    */ 
    static int[] division(int dividend, int divisor){ 

     int result[] = {0, dividend}; 

     if (dividend < divisor){ 
      return result; 
     } else{ 

      ***int temp = dividend - divisor; 
      int r = 1 + division(temp , divisor);*** 

      return result; 
     } 

    } 

    public static void main(String[] args){ 
     int result[]=division(13,3); 
     System.out.println("Quotient: "+ result[0] 
       + " Remainder: "+ result[1]); 
    } 
} 
+1

'division(temp、divisor)'は配列を返します。ここに '1'を追加することはできません。 – SomeJavaGuy

答えて

5

あなたはint型を追加しようとしているので、あなたが失敗しています配列を作成し、結果をintに代入します。代わりに、再帰呼び出しによって返された配列の最初の位置に1を加え、その配列を返す必要があります。

static int[] division(int dividend, int divisor){ 

    int result[] = {0, dividend}; 

    if (dividend < divisor){ 
     return result; 
    } else{ 
     result = division(dividend - divisor, divisor); 
     result[0]++; 
     return result; 
    } 

} 
関連する問題