数据结构----递归调用(求最大公约数)

理论公式
在这里插入图片描述

具体代码

#include <stdio.h>

/*
	递归函数 
*/ 
int Gcd(int n,int m){
	if(n<0||m<0){	//错误 
		return -1;
	}
	if(m==0){	//递归出口 
		return n;
	}else if(m>n){
		return Gcd(m,n);
	}else{
		return Gcd(m,n%m);
	}
}

/*
	循环函数 
*/ 
int Gcd2(int n,int m){
	int tn,tm,temp;
	if(n<0||m<0){
		return -1; 
	}
	if(m>n){	//交换参数位置 
		tn = m;
		tm = n;
	}else{	//不交换 
		tn = n;
		tm = m;
	}
	while(tm!=0){
		temp = tn;
		tn = tm;
		tm = temp%tm;
	}
	return tn;
} 
void main(void){
	int x,y;
	do{
	printf("请输入你要求最大公约数的两个数(负数退出):");
	int n,m;
	scanf("%d%d",&n,&m);
	x=n;
	y=m;
	printf("(递归调用)%d和%d的最大公约数是:%d\n",n,m,Gcd(n,m));
	printf("\n");
	printf("(循环函数)%d和%d的最大公约数是:%d\n",n,m,Gcd2(n,m));
	printf("\n\n");
	}while(x>=0||y>=0);
	getch();
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值