java - 用JAVA中的递归解释最大公约数

标签 java recursion

我试图更好地理解递归。如果我理解正确,递归适用于您的基本案例和原始案例的更简单版本。因此,通常人们会看到代码从参数中减一。但是,我看到下面的代码,如果不简化案例,我不明白它是如何工作的。任何解释都会有帮助。

public static long gcd(long a, long b) {

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

最佳答案

此特定示例使用 Euclidean algorithm 。它指出,您可以通过取第二个数字并将其作为第一个数字,然后取 a/b 的余数来获得第二个数字,从而找到该值的 gcd。继续执行此操作,直到第二个数字达到 0。

示例 gcd(2,8)

a=2
b=8
a%b=2

所以下一个调用是gcd(8,2)

a=8
b=2
a%b=0 (since 8/2=4)

所以它会调用 gcd 一次剩余时间 gcd(2,0)

a=2
b=0

它将达到 b==0 的基本情况并返回 a=2

关于java - 用JAVA中的递归解释最大公约数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28181757/

相关文章:

javascript - 包含重复项函数不会返回 true?

Java NTP 实现

java - hibernate 搜索配置

javascript - javascript 中的递归回溯(闭包)

function - 以某种方式添加括号的 Lisp 函数

python - 递归生成器和 send()

java - 传递 2 个命令行参数并在 Java 中显示两者的总和

java - 如何同步两个异步任务?

java - Admob 仅显示在 XML 之上

Java - 递归链表实现