37 lines
700 B
C
37 lines
700 B
C
#include <stdio.h>
|
||
|
||
int gcd(int a, int b, int level);
|
||
|
||
int main()
|
||
{
|
||
int n1, n2;
|
||
printf("\n*** 求二數的最大公因數 ***\n\n請輸入兩個正整數 ==> ");
|
||
scanf("%d %d",&n1,&n2);
|
||
|
||
printf("\n輸入的二個正整數分別是%d與%d,遞迴呼叫層級及回傳值如下...\n\n",n1,n2);
|
||
gcd(n1,n2,0);
|
||
|
||
printf("\n");
|
||
|
||
return 0;
|
||
}
|
||
|
||
int gcd(int a, int b, int level)
|
||
{
|
||
int i, result;
|
||
|
||
level++;
|
||
for (i = 1; i < level; i++) printf("\t");
|
||
if (b == 0) {
|
||
printf("gcd(%d,%d) = %d [解*]\n",a,b,a);
|
||
return(a);
|
||
}
|
||
else {
|
||
printf("gcd(%d,%d)\n",a,b);
|
||
result = gcd(b,a%b,level);
|
||
for (i = 1; i < level; i++) printf("\t");
|
||
printf("gcd(%d,%d) = %d\n",a,b,result);
|
||
return(result);
|
||
}
|
||
}
|