注册 登录
编程论坛 C++ Builder

用递归求出最大公约数和最小公倍数,求补充最小公倍数的递归用法

dongmanmi 发布于 2014-09-27 23:08, 5328 次点击
#include<iostream>
using namespace std;
int main()
{
    int x,y;
    cout<<"输入x和y"<<endl;         
    int maxyue(int x,int y);
    int minbei(int x,int y);
    cin>>x>>y;  
    cout<<"最大公约数为:"<<maxyue(x,y)<<endl;
    cout<<"最小公倍数为:"<<minbei(x,y)<<endl;
    system("pause");
    return 0;
}


int maxyue(int x,int y)
{
    int z;
    if(x<y){ z=x; x=y; y=z;}
    if(x%y) maxyue(y,x-y);
    else return y;
}

int minbei(int x,int y)
{   
    int maxyue(int x,int y);
    int z;
    z=maxyue(x,y);
    return x*y/z;
}
3 回复
#2
peixiao2014-12-09 23:24
你最大公约数最大公倍数的递归算法都不对
#3
koma仔2015-03-23 22:50
回复 楼主 dongmanmi
/*#include <iostream>
using namespace std;
int function (int m,int n)
{
    int i;
    i=m%n;
    while (i!=0)
    {
        m=n;
        n=i;
        function(m,n);
    }
    return n;
}
int main()
{
    int a,b;
    int m,n;
    cout << "shu ru m,n" << endl;
    cin >> m >> n;
    b=function (m,n);
    a=m*n/b;
    cout << b <<" " << a;
    return 0;
}*/  






递归 求最大公约
#4
yangfrancis2015-04-10 08:41
为什么递归?用遍历吧。遍历好理解些。公约数遍历 1到x<=y?x:y,公倍数遍历 x>=y?x:y 到x*y
1