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)
您失败了,因为您正在尝试将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)
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |