gpt4 book ai didi

java - 如何使用以被除数和除数作为参数的递归创建 int[] 除法?

转载 作者:行者123 更新时间:2023-11-29 07:34:46 29 4
gpt4 key购买 nike

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

我尝试使用 “else” 之后的代码来使用 int temp 计算商,该 temp 计算可以除以多少次 (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]);
}
}

最佳答案

您失败了,因为您试图将一个 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;
}

}

关于java - 如何使用以被除数和除数作为参数的递归创建 int[] 除法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37297552/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com