使用递归解决此问题必须。
我试图在“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]);
}
}
答案 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;
}
}