| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 905 人关注过本帖
标题:递归 求最大公约数?为什么不能运行?
只看楼主 加入收藏
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
结帖率:84.21%
收藏
已结贴  问题点数:10 回复次数:4 
递归 求最大公约数?为什么不能运行?
程序代码:
#include
#include 

int gys(int m,int n)
{
   if(n%m==0)
   return m;
   else
   return gys(m,n%m);
}

int main()
{
    int a;
    while(scanf("%d",&a)!=EOF)
    {
        int b,c;
        scanf("%d",&b);
        c=gys(a,b);
        printf("%d",c);
    }
    return 0;
}

搜索更多相关主题的帖子: include include 公约数 公约数 color color 
2016-02-21 22:39
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:4 
首先,求最大公约数不用那么复杂,再次,也看不懂你那a,b是什么用的。其实这个和判断素数有点类似。
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a;
    while(scanf("%d",&a)!=EOF)
    {
        if(a<=0) break;  //如果小于等于0,退出

        if(a==1)         //如果等于1,直接输出结果
        {
            printf("Result of %d is:%d\n",a,1);
            continue;
        }

        int i=1,tmp;
        for(;i<=(a/2);i++)
        {
            if(a%i==0)
            {
                tmp=i;
            }
        }
        printf("Result of %d is:%d\n",a,tmp);
    }

    return 0;
}


   唯实惟新 至诚致志
2016-02-21 23:11
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:6 
回复 楼主 MuMuLee
你递归时参数写反了,把return gys(m,n%m);改成return gys(n%m,m);即可,代码可简化如下:
程序代码:
#include <stdio.h>
int gys(int m,int n)
{
    return n%m?gys(n%m,m):m;
}

int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF)printf("%d\n",gys(a,b));
    return 0;
}

 

能编个毛线衣吗?
2016-02-22 07:29
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
收藏
得分:0 
回复 3楼 wmf2014
【感谢】
2016-02-22 08:02
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
回复 3楼 wmf2014
冒昧问一下,这里面不用对a和b进行比较大小吗?不是应该保证前面的那个数要大于等于第二个数才能进行求余运算吗?

我一直习惯都是在递归函数里面加个关于a,b比较置换的过程,是不是多余的?

[此贴子已经被作者于2016-2-22 11:43编辑过]


φ(゜▽゜*)♪
2016-02-22 11:40
快速回复:递归 求最大公约数?为什么不能运行?
数据加载中...
 
   



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

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