接着上一篇,还是在柴田望洋的明解C语言看到的,通过递归求最大公约数。先看代码:
/*
求最大公约数
*/
#include<stdio.h>
int fuc2(int x,int y) { // 返回最大公约数(x>=y)
return (y==0?x:fuc2(y,x%y));
}
int fuc1(int x,int y) { // 求出最大公约数
return (x>y?fuc2(x,y):fuc2(y,x));
}
int main() {
int a,b;
printf("请输入两个整数:\n");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("两个整数最大公约数是%d\n",fuc1(a,b));
return 0;
}
运行结果:
思考一下求两个整数的最大公约数的方法。把两个整数当成一个长方形的长和宽,把这个长方形分成几个正方形,余下一个长方形,又把余下的这个长方形分成几个正方形,余下一个长方形,直到全部都为正方形为止。这时候最小正方形的边长就是两个整数的最大公约数了~