gpt4 book ai didi

java - 使用递归获取 2 个数字的乘积和商,而不使用 * 和/运算符

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:34 25 4
gpt4 key购买 nike

我正在尝试学习编程,并且正处于学习递归的阶段。在此之前,我已经成功解决了这个问题,但是使用了循环。现在,由于递归对我来说非常有趣,我想知道是否可以将循环转换为递归方法。我已经做了我的尝试,但我一直在进行某种无限的计算。

有人可以帮我解决这个问题吗?谢谢。

这是我的代码。

public class RecursiveProduct {


public static void main (String[] args) {

Scanner myInput = new Scanner(System.in);

System.out.print("Enter num1: ");
int num1 = myInput.nextInt();

System.out.print("Enter num2: ");
int num2 = myInput.nextInt();

int product = recursiveProduct(num1, num2);

System.out.print(num1 +" * " +num2 +" = " +product);


}

public static int recursiveProduct(int a, int b)
{
int result = 0;

if(b == 0)
return result;
else
{
result += a;
return result += recursiveProduct(a, b--);
}
}


}

最佳答案

首先,这是 C++ 代码,但稍后我将解释 Java 代码:

int function(int a, int b, int &counter,int &result){
if(b==0 || a==0)
return 0;
if(counter==b)
return 1;
else{
result+=a;
counter++;
function(a,b,counter,result);
}
}

函数采用两个引用int &counterint result。不幸的是,您不能在 Java 中通过引用传递基本类型,因此您应该声明 Wrapper 类,然后调用您的方法,如下所示:

class MyInt{
public int value=0;

}

在这里,您将 100% 确定 MyInt 的对象将按值传递,但它本身是引用,因此您可以得到您想要的。重新实现我们的函数:

 void function(int a, int b, MyInt counter,MyInt result){
if(b==0 || a==0)
return 0;
if(counter==b)
return 1;
else{
result.value+=a;
counter.value++;
function(a,b,counter,result);
}
}

像下面这样调用你的方法,一切都应该正常:

int a=2,b=5;
MyInt counter=new MyInt();
MyInt result=new MyInt();
function(a,b,counter,result);

关于java - 使用递归获取 2 个数字的乘积和商,而不使用 * 和/运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442981/

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