2016-05-18 60 views
1

這個問題必須使用遞歸解決。如何使用帶有除數和除數作爲參數的遞歸創建一個int []除法方法?

我試圖用代碼之後「其他」找到使用計數是多少次可以劃分爲int溫商(TEMP =股利 - 除數)。

int r應該是商,但由於division()不是int而是數組,我不能應用遞歸。我也嘗試在結果[0]內插入除法(),但同樣的事情,返回是一個數組,而不是一個int。

結果是一個有2個元素的數組:分數的商和餘數。

我一直在練習遞歸,但我失去了在這個混合遞歸和數組

我也許可以用一個解決這個for循環,但正如我所說的,必須使用遞歸。

只有else和return之間的代碼應該被修改。如果這應該很容易,我不會看到它。

我一直在尋找答案,但我發現使用int作爲返回,而不是數組。

這是我失敗的測試代碼(你可以在主看到,測試股息爲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; 
    } 

} 
相關問題