如何使用带有被除数和除数作为参数的递归来创建一个int []除法方法?

时间:2016-05-18 10:57:07

标签: java arrays recursion

使用递归解决此问题必须

我试图在“else”之后使用代码来查找使用int temp的商来计算可以分割的次数(temp = dividend - divisor)。

int r应该是商,但由于division()不是int而是数组,所以我不能应用递归。我也尝试在result [0]中插入division(),但同样的,返回是一个数组,而不是一个int。

结果是一个包含2个元素的数组:除法的商和余数。

我一直在练习递归,但我迷失了这种递归和数组的混合

我可以用for循环解决这个问题,但正如我所说,必须使用递归。

只应修改else和return之间的代码。如果这应该很容易,我看不到它。

之前我一直在寻找答案,但我发现的那些使用int作为return,而不是数组。

这是我测试失败的代码(正如您在Main中看到的那样,测试红利为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 个答案:

答案 0 :(得分: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;
    }

}