编写递归函数求两个正整数a和b的最大公约数

1,如果a除以b能整除,则最大公约数是b。
2,否则最大公约数等于b和a%b的最大公约数。
3,编写时加上注释,让我能够看懂。


不想吐槽百度的排版。

追问

大神,你在不在,我想拜你为师。

追答

我是不是大神,真的。。。

追问

你这个是C++吗,我还没学过呢
我现在正在学C

追答

上一个回答多了个是字你竟然没发现,打多了。。
然后,我水平一般般的,无非就是年纪高了点,你迟点也会很多的,然后c和c++这个嘛,我都混搭写的,平时一般写c++,那个gcd函数应该可以在c里面用,我直接学的c++。

追问

C没有这个iostream头文件,我换成stdio.h就出错了。

追答

#include <stdio.h>

int gcd(int a,int b){

if(b==0)return a; 

return gcd(b,a%b);

}


int main(){

int a,b,c;

scanf("%d%d",&a,&b);

if(a<b){c=a;a=b;b=c;}

printf("%d\n",gcd(a,b));

return 0;

}

追问

弱弱的问一句,为什么要用if(a<b){c=a;a=b;b=c;}

追答

貌似不加好像也可以,习惯了判断一下符不符合辗转相除的要求(要求第一个数要大于等于第二个数的),这个程序里面好像如果不判断,也可以,没测试。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-23

以下是用递归编写的求两个正整数a和b的最大公约数:


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

 int Gcd( int a ,int b );

 main()
{
int a,b;  //储存两个数
int g;  //接收最大公约数

printf("Input a,b:");
scanf("%d,%d",&a,&b);

g=Gcd(a,b);
//增强程序健壮性
if(g==-1)
printf("Input error!\n");
else
printf("%d\n",g);

system("pause");
 }

 //函数功能:计算最大公约数
 int Gcd( int a ,int b )
 {
int t;
//保证a>=b
if(a<b)
{
t=a;
a=b;
b=t;
}

//用递归实现计算最大公约数
if(a<=0||b<=0)
return -1;
else if(a%b==0)
return b;
else
return Gcd(b,a%b);
 }

编写递归函数求两个正整数a和b的最大公约数
不想吐槽百度的排版。

编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几...
{ Rem = M % N;取余数,到最后一次是,必定是为0。Rem为0时的参数M值便是最大公约数。gcd(N,Rem);} return M;} 拿个简单的2,3来做例子。第一次运行GCD(2,3);3!=0==> rem=2%3=2。gcd(3,2);2!=0 ==> rem=3%2=1 gcd(2,1);1!=0 ==> rem=2%1=0 ...

程序设计,两个正整数的最大公约数(Greatest Common Divisou,GCD)是能 ...
\\n");elseprintf("%d\\n",g);system("pause"); } \/\/函数功能:计算最大公约数 int Gcd( int a ,int b ) {int t;\/\/保证a>=bif(a<b){t=a;a=b;b=t;}\/\/用递归实现计算最大公约数if(a<=0||b<=0)return -1;

python设计递归函数,求两个数的最大公约数
sub_common = sub_common - 1 return common_data(a, b, sub_common)上面就是定义了一个递归函数求最大公约数 如 a = 16 b = 12 c = common_data(16,12,12) # 前两个参数就是需要求最大公约数的两个数,第三个参数就是那两个数中较小的那个数, 返回值就是最大公约数 ...

用递归法求两个正整数的最大公约数和最小公倍数,C++编程。
函数声明有问题,在写函数Y()是在之前加个int,表示返回值是int类型的。而且没有主函数main。在#include <iostream.h>后腰写个主函数如int main(){你写的类容}

C语言编程如何实现求两个整数的最大公约数?
在上述代码中,我们定义了一个名为gcd的函数,用于求解两个整数的最大公约数。该函数使用递归的方式实现欧几里得算法。在主函数中,我们首先从用户输入中读取两个整数,然后调用gcd函数计算它们的最大公约数,并将结果输出到控制台。♡♡ 有帮助到的话,麻烦采纳哦!♡♡...

C语言如何求两个数的最大公约数和最小公倍数
递归方法:include <stdio.h> int gcd(int a,int b) \/\/最大公约数 {int r;do {r=a%b;a=b;b=r;}while(r);return a;} int lcm(int a,int b) \/\/最小公倍数 {return a*b\/gcd(a,b);} int main() \/\/主函数 {int a,b;scanf("%d%d",&a,&b);printf("最大公...

计算两个正整数的最大公约数c语言
以下是一个使用C语言计算两个正整数的最大公约数的示例代码:c复制代码 include<stdio.h> int gcd(int a, int b){ if(b==0){ return a;}else{ return gcd(b, a % b);} } int main() { int num1, num2, result;printf("请输入两个正整数:");scanf("%d %d", &num1, &num...

编写一个c语言程序 求两个整数的最大公约数
return gcd(b, a % b);} ```在上面的代码中,我们定义了一个`gcd`函数来求两个整数的最大公约数。`gcd`函数使用递归方式来实现辗转相除法求最大公约数。如果a能被b整除,则b就是两个整数的最大公约数。否则,我们就不断将b作为a,将a%b作为b,不断递归求解,直到b能够整除a。在主函数中...

c语言求最大公约数
1、新建一个C语言源程序,这里使用Visual C++6.0的软件:2、从键盘中输入两个正整数a和b。取两个数a,b中的较小值存放到变量n中。从两个数a和b中的较小数开始逐个减小1,寻找能整除a和b的整数,第一个找到的整数即整数a和b的最大公约数,最后将找到的结果输出即可完成程序的编写:3、对源...

相似回答