欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

【C语言】最大公约数和最小公倍数递归-最大公约数(GCD)

最编程 2024-08-12 08:48:22
...
int gcd(int a, int b) 
{
	return a % b ? gcd(b, a % b) : b;
}

用辗转相除法求最大公约数,用递归写的代码会比循环简洁一些。

先判断a除以b的余数是否为0。

	 a % b ?

不为0的话,则继续用被除数作为除数,用上一步的余数作为除数继续运算。

	 a % b ? gcd(b , a%b)

是0的话则b就位两数的最大公约数,则返回b。

	 a % b ? gcd(b , a%b): b

注 : 这里不用考虑a 和 b的大小。如果a 小于 b, a%b 就等于 a ,则调用gcd (b, a % b)就等同于调用 gcd (b, a) , 所以无需判断是否交换。