接着上一篇,還是在柴田望洋的明解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;
}
運行結果:
思考一下求兩個整數的最大公約數的方法。把兩個整數當成一個長方形的長和寬,把這個長方形分成幾個正方形,餘下一個長方形,又把餘下的這個長方形分成幾個正方形,餘下一個長方形,直到全部都爲正方形爲止。這時候最小正方形的邊長就是兩個整數的最大公約數了~