需要解释循环java递归代码吗

需要解释循环java递归代码吗,java,Java,此代码用于查找可被1到20之间的所有num整除的最小数 我不明白这段代码是如何处理递归的,你能解释一下吗 静态长gcd(长a、长b) { 如果(a%b!=0) 返回gcd(b,a%b); 其他的 返回b; } //函数返回前n个数字的lcm 静态长lcm(长n) { 长ans=1; 对于(长i=1;i这是非常数学的,但gcd代表“最大公分母”,lcm代表“最小公倍数” 主算法跟踪当前最低公倍数“ans”,并将“i”从1迭代到“n”,在本例中为20。然后将当前值乘以每个“i”,并除以“ans

此代码用于查找可被1到20之间的所有num整除的最小数 我不明白这段代码是如何处理递归的,你能解释一下吗

静态长gcd(长a、长b)
{ 
如果(a%b!=0)
返回gcd(b,a%b);
其他的
返回b;
} 
//函数返回前n个数字的lcm
静态长lcm(长n)
{ 
长ans=1;

对于(长i=1;i这是非常数学的,但gcd代表“最大公分母”,lcm代表“最小公倍数”

主算法跟踪当前最低公倍数“ans”,并将“i”从1迭代到“n”,在本例中为20。然后将当前值乘以每个“i”,并除以“ans”和“i”之间的最大公分母

gcd()方法用于计算最大公分母


算法工作的原因更多的是一个问题,这是非常数学的,但gcd代表“最大公分母”,lcm代表“最小公倍数”

主算法跟踪当前最低公倍数“ans”,并将“i”从1迭代到“n”,在本例中为20。然后将当前值乘以每个“i”,并除以“ans”和“i”之间的最大公分母

gcd()方法用于计算最大公分母


算法工作的原因更多的是一个问题,即在每个函数中放置println语句,并打印所有变量值以查看每次调用的值。在每个函数中放置println语句,并打印所有变量值以查看每次调用的值。
static long gcd(long a, long b) 
{ 
   if(a%b != 0)  
      return gcd(b,a%b); 
   else 
      return b; 
} 

// Function returns the lcm of first n numbers 
static long lcm(long n) 
{ 
    long ans = 1;     
    for (long i = 1; i <= n; i++) 
        ans = (ans * i)/(gcd(ans, i)); 
    return ans; 
} 

// Driver program to test the above function 
public static void main(String []args)  
{ 
    long n = 20; 
    System.out.println(lcm(n)); 

}