为什么我要把辗转相除法当做奇技淫巧的一章呢,有几个原因,一个是因为我刷 leetcode 题目时候在这里掉进坑了,因为平时用的少,我当时忘了辗转相除法,另一个是因为我觉得有必要把各种细节方法,各种“招式”在奇技淫巧中做梳理,就好比一个人练功夫,如果这个人平常学到了各种各样的小招式,然后把所有的小招式都融会贯通,根据不同的打斗场景结合在一起,打成华丽的连招效果,那这个人肯定很厉害吧!
介绍辗转相除法是很古老的数学算法了,通过辗转相除的方式,用来求两数的最大公约数的方法
具体过程// 现在要求 a 和 b 的最大公约数
int c = a % b;
int d = b % c;
int e = c % d;
if (e == 0) {
System.out.println("最大公约数是:" + d);
}
代码实现
// 递归实现辗转相除
public int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}