Shimmer666 发表于 2022-6-10 10:04

c语言使用递归来计算两个数的最大公约数


请设计一个函数int GCD(int x, int y),利用递归实现辗转相除法,计算x和y的最大公约数,并在main函数中①输入两个整数;②调用函数GCD计算这两个数的最大公约数;③打印输出结果。输入输出效果参考如下格式:
84, 36<回车>
GCD(84,36)=8



#include <stdio.h>
#include <math.h>

int GCD(int x,int y)
{
         if(x%y == 0)
            return 0 ;
         else
            return GCD(x,x%y);

}

int main()
{
       int x; int y;
       scanf("%d,%d",&x,&y);
       printf("GCD(%d,%d)=%d",GCD(x,y));
       return 0;
}
/*上面是我自己写的但是主函数有问题太笨了我。。。求助/*




huanwuying 发表于 2022-6-10 11:05

   if(x%y == 0)               return 0 ; 这不是应该返回y吗,返回0是什么意思,
printf("GCD(%d,%d)=%d",GCD(x,y)); 输出你输出的是三个数,但是你这个里面只有一个GCD(x,y),意思应该是 printf("GCD(%d,%d)=%d",x,y,GCD(x,y));?

Shimmer666 发表于 2022-6-10 11:18

huanwuying 发表于 2022-6-10 11:05
if(x%y == 0)               return 0 ; 这不是应该返回y吗,返回0是什么意思,
printf("GCD(%d,%d)=%d ...

解决了 感谢!!!!!我太粗心了
页: [1]
查看完整版本: c语言使用递归来计算两个数的最大公约数