[Error] "GCD" was not declared in this scope

我自己写了一个函数GCD计算最大公约数,在lcm最小公倍数函数之中调用GCD,报错了,求指正

#include
using namespace std;
long long n,m;
int lcm(int a,int b){
    return a*b/GCD(a,b);
}
int GCD(int x,int y){
    if(y == 0){
        return x;
    }else{
        return GCD(x,x%y);
    }
}
int main(){
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    cin>>n>>m;
    n = max(n,m);
    m = min(n,m);
    cout<<GCD(n,m)<lcm(n,m);
    return 0;
}

报错信息:
[Error] "GCD" was not declared in this scope

交换一下函数顺序,lcm函数放到GCD函数之后
否则编译lcm函数时是不认识GCD函数的

#include
using namespace std;
long long n,m;
int GCD(int x,int y){
    if(y == 0){
        return x;
    }else{
        return GCD(x,x%y);
    }
}
int lcm(int a,int b){
    return a*b/GCD(a,b);
}
int main(){
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    cin>>n>>m;
    n = max(n,m);
    m = min(n,m);
    cout<<GCD(n,m)<lcm(n,m);
    return 0;
}
报错信息:
[Error] "GCD" was not declared in this scope

先写GCD再写LCM啊

先写GCD再写LCM啊

第11行应该是 return GCD(y,x%y);不是return GCD(x,x%y);

应该把GCD和LCM改成这样

int GCD(int x,int y){
    if(y == 0){
        return x;
    }
    return GCD(y,x%y);
}
int lcm(int a,int b){
    return a*b/GCD(a,b);
}

```c++