#include <stdio.h>
int abc(int a,int b)
{
int c;
while(b)
{
c=a%b;a=b;b=c;
}
return a;
}
void main()
{
int a=24,b=16,c;
c=abc(a,b);
printf("%d",c);
}
这不是辗转相除法吗,求最大公约数的
如果你知道这是求最大公约数,那24和16的最大公约数不是8吗
再看看每一步到底是怎么执行的:
while(b)当b不为0时一直循环,一开始a=24,b=16
c=a%b,那么c=8
a=b;a=16
b=c;b=8
第二次循环:
c=a%b,c=0
a=b,a=8
b=c,b=0
循环结束
return a
那么返回的不是8吗
不应该是8吗?
你写的 abc 函数是用来求 最大公因数 的 (至少看起来是这样)
而24和16的最大公因数就是8啊
while:
第一次 c=24%16=8 a=b=16, b=c=8
第二次 c=16%8=0 a=b=8, b=c=0
不满足返回a=8,所以打印的结果就是8