最大公约数gcd

最大公约数gcd

#include <stdio.h>  //求最大公约数的辗转相除法递归写法
int gcd(int a, int b) {
	if( b== 0) return a;
	else return gcd(b,a % b);
	//return !b?a:gcd(b,a%b);
}
int main(){
	int m, n;
	while(scanf("%d%d",&m, &n)!=EOF) {
		printf("%d\n",gcd(m,n));
	}
}

递归边界,即数据规模减小到什么程度使得可以算出结果来。众所周知:0和任意一个整数a的最大公约数都是a(注意:不是0),这个结论就可以当作递归边界。由此很容易想到将其写成递归的形式,因为递归的两个关键已经得到:
①递归式:gcd(a,b)=gcd(b,a%b)
②递归边界:gcd(a,0)=a。