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

Noo*_*lhu 1 java arrays recursion

这个问题必须使用递归来解决.

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

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

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

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

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

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

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

这是我测试失败的代码(正如您在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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 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;
    }

}
Run Code Online (Sandbox Code Playgroud)