问题标题: 酷町堂:1238 请问是哪里错了

0
0
已解决
王霁月
王霁月
新手守护
新手守护
#include<bits/stdc++.h> 
using namespace std;
void f(int n,int m)
{
    if(n==0)
    {
    cout<<m;
    return ;
    }
    f(n,m%n);
}
int main()
{
    int n,m;
    cin>>m>>n;
    f(m,n);
    return 0;
}

 


0
已采纳
黄瀚霆
黄瀚霆
初级光能
初级光能

你的辗转相除写的不对啊

如果a模b为0的话

返回b

否则返回f(b,a%b);

不用cout 用int来做

 if(a%b==0)
    {
        return b;
    }
    else
    {
        return f(b,a%b);
    }
0
0
0
吴楚安
吴楚安
新手守护
新手守护

将f(n,m%n)改为f(m,n%m)  //注意:辗转相除法很容易写反

将if(n==0) 改为 if(n%m==0)  //由于m一定比n更早为零,在这中情况下n%m存在对0去模,会RE(runtime erorr)

我要回答