Java 我收到此代码的堆栈溢出错误:
我是java新手,不知道为什么这段代码会出现堆栈溢出错误Java 我收到此代码的堆栈溢出错误:,java,recursion,Java,Recursion,我是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) {
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,但它给了我以下错误信息:
栈溢出
在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); }
n1
和n2
修改为6
和5
,无论您通过了什么;你认为a(6,5)代码>是否在else
块中?