gpt4 book ai didi

java - 我收到此代码的堆栈溢出错误 :

转载 作者:行者123 更新时间:2023-12-02 00:01:11 25 4
gpt4 key购买 nike

我是java新手,我不知道为什么这段代码会出现堆栈溢出错误......

int lcm = 0;
public int a (int n1,int n2) {

n1 = 6;
n2 = 5;
if(n1>n2) {
lcm = n1;
}
else if(n2>n1) {
lcm = n2;
}
if(lcm%n1 == 0 && lcm%n2 == 0) {
lcm = lcm;
}
else {
++lcm;
a(6,5);
}
return (lcm);
}
public static void main (String[] args) {

ktm ob = new ktm();
int ans = ob.a(6,5);
System.out.println(ans);

}

我希望使用递归计算两个数字的 lcm,但它给了我这个错误消息:java.lang.StackOverflowError 错误 在 ktm.a(ktm.java:25)

最佳答案

您始终将 6 和 5 作为输入发送到函数,这使得您的函数无限调用该输入,因为 if 条件 (lcm%n1 == 0 && lcm%n2 == 0) 不会满足对于给定的输入。

  • 如果您想使用递归来计算 LCM,请尝试此

    int gcd(int a, int b) 
    {
    if (a == 0)
    return b;
    return gcd(b % a, a);
    }

    int lcm(int a, int b)
    {
    return (a*b)/gcd(a, b);
    }
    public static void main (String[] args) {
    ktm ob = new ktm();
    int ans = ob.lcm(6,5);
    System.out.println(ans);
    }

关于java - 我收到此代码的堆栈溢出错误 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176925/

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