说是两种方法,其实他们本质是一样的,只是一种用递归,另一种是循环的改写罢了。
/** * 递归算法 * * 最大公约数 * @param num1 第一个数 * @param num2 第二个数 * @return 返回最大公约数 */ public static long gcb(long num1, long num2) { if (num1 == 0) { return num2; } else { return gcb(num2 % num1, num1); } }
/** * 循环算法 * * 最大公约数 * @param num1 第一个数 * @param num2 第二个数 * @return 返回最大公约数 */ public static long gcb2(long num1, long num2) { long result = num2; while (num1 != 0) { long tmp = num2 % num1; result = num2 = num1; num1 = tmp; } return result; }