| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1134 人关注过本帖
标题:我是初学者,请教
取消只看楼主 加入收藏
changshiop
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-7
收藏
 问题点数:0 回复次数:5 
我是初学者,请教
题目:递归调用
编写一个程序,要求:允许用户输入两个整数,求出并输出两个整数的最大公约数(Common denominator),这里介一个求公约数的算法--欧几里德算法,又称辗转相除法。其计算理如下:
用a除以b取余数a1
如果a1 = 0, 则b为最大公约数
否则用 b 除以a1取余数a2
如果a2 = 0,则a1为最大公约数
否则用 a1 除以a2取余数a3
如果a3 = 0,则a2为最大公约数
否则用a2除以a3取余数a4
。。。。。。
分析上述算法,总结出递推关系式,用递归方法实现这个程序。
搜索更多相关主题的帖子: 分析 欧几里德 分析 欧几里德 公约数 公约数 
2008-11-19 14:54
changshiop
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-7
收藏
得分:0 
回复 2# 的帖子
此程序需要调用一个新函数的。
2008-11-19 15:17
changshiop
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-7
收藏
得分:0 
回复 2# 的帖子
现在需要解决的是递归公式~
2008-11-19 15:27
changshiop
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-7
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
int get(int, int);
int main()
{
    int a, b, d;

    printf("Input two numbers in order to find out the answer!:\n");
    scanf("%d%d", a, b);
    int get(int a, int b);
    printf("最大公约数为:%d", d);
    return 0;
}

int get(int a, int b)
{
    int c, d;
    d = b;
    c = a % b;
    if (c != 0)
    {
        d = (b, c);
    }
    return d;
}
这样可以实现了吗?但是运行还是有错误啊
请教
2008-11-19 15:31
changshiop
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-7
收藏
得分:0 
搞出来了
#include <stdio.h>
#include <stdlib.h>
int get(int, int);
int main()
{
    int a, b, d;

    printf("Input two numbers in order to find out the answer!:\n");
    scanf("%d%d", &a, &b);
    d = get(a, b);
    printf("最大公约数为:%d", d);
    return 0;
}

int get(int a, int b)
{
    int c, d;
    d = b;
    c = a % b;
    if (c != 0)
    {
        d = get(b, c);
    }
    return d;
}
2008-11-19 16:18
changshiop
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-7
收藏
得分:0 
回复 8# 的帖子
还是你完善
谢谢了
2008-11-19 16:19
快速回复:我是初学者,请教
数据加载中...
 
   



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

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