`
yunchow
  • 浏览: 317651 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

用递归求两个数的最大公约数

阅读更多
/************************
* 文件名:GongYueShu.cpp
* 功  能:计算两个数的最大公约数
* 作  者:若风恶魔
* 时  间:09/5/13
************************/
#include <iostream.h>
#define u32 unsigned int

u32 count(u32,u32);

int main(void)
{
	u32 x,y,flag;//此两数用于接收输入的两个正整数
	while(1)
	{
		cout<<"********************************************"<<endl;
		cout<<"请选择功能号:1 退出程序,其它 计算公约数"<<endl;
		cout<<"********************************************"<<endl;
		cout<<"功能号:";
		cin>>flag;
		switch(flag)
		{
		case 1:
			return 1;
		default:
			cout<<"请输入第两个数:"<<endl;
			cin>>x>>y;
			cout<<"x="<<x<<",y="<<y<<endl;
			cout<<"x,y的最大公约数是:"<<count(x,y)<<endl;
			break;
		}
	}
}
/************************
* 函数名:count
* 参  数:arg1:第一个数,arg2第二个数
* 功  能:计算两个数的最大公约数
* 作  者:若风恶魔
* 时  间:09/5/13
* 备  注:此函数用递归方法实现
************************/
u32 count(u32 arg1,u32 arg2)
{
	u32 tem;
	if(0==arg1%arg2)
		return arg2;   //递归函数出口
	else
	{
		tem = arg2;
		arg2 = arg1%arg2;
		arg1 = tem;
		count(arg1,arg2);//函数在此进行递归
	}
}

分享到:
评论
1 楼 night_stalker 2009-05-13  
unsigned gcd(unsigned a, unsigned b){
  return (b ? gcd(b, a % b) : a);
}

相关推荐

Global site tag (gtag.js) - Google Analytics