第一种,值传递,返回结果。
#include<stdio.h>
int g(int x,int y){
if(y==0)//边界条件
return x;//结果
g(y,x%y);//递归公式
}
int main(){
int x,y;
int a,b;
scanf("%d%d",&x,&y);
if(x>y) x=g(x,y);
else if(x<y) x=g(y,x);
printf("%d",x);
}
第二种,引用传参,递归不返回。
#include<stdio.h>
void g(int &x,int &y){
if(y==0)
return;
int a;
a=x%y;
x=y;
y=a;
g(x,y);
}
int main(){
int x,y;
int a,b;
scanf("%d%d",&x,&y);
if(x>y) g(x,y);
else if(x<y) g(y,x);
printf("%d",x);
}