| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1053 人关注过本帖
标题:利用递归求两个数的最大公约数-已解决
只看楼主 加入收藏
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
结帖率:100%
收藏
 问题点数:0 回复次数:2 
利用递归求两个数的最大公约数-已解决

/*
Name: 利用递归求两个数的最大公约数
Copyright:
Author:
Date: 24-10-07 09:31
Description:
*/
#include <iostream>
using namespace std;
int rgcd(int a,int b)
{
if(b!=0)
return rgcd(b,a%b);
return a;
}

int main()
{
int v1,v2;
cin>>v1>>v1;//这里粗心
cout<<rgcd(v1,v2)<<endl;
system("pause");
return 0;
}
看下这个程序结果为什么不对

[此贴子已经被作者于2007-10-24 11:53:14编辑过]

搜索更多相关主题的帖子: 递归 最大公约数 
2007-10-24 11:23
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
这个是我根据递归写的,写完了一运行,结果总是1,郁闷死了.

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-10-24 11:35
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 

这个是用辗除法写的:

/*
Name:
Copyright:
Author:
Date: 24-10-07 09:44
Description:
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d %d",&num1,&num2);
if(num1)//把两个数互换
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;//让a、b分别保存num1、num2的副本
b=num2;
while(b!=0)/*利用辗除法,直到b(余数)为0为止*/
{
temp=a%b;//取a和b的余数
a=b;//把b赋给a
b=temp;//把它们的余数赋给b
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
system("pause");
return 0;
}


天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-10-24 11:37
快速回复:利用递归求两个数的最大公约数-已解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017084 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved