|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
递归法求两个数的最大公约数
运行时得不到结果,找不到哪里错了,求大佬解答
- #include <iostream>
- using namespace std;
-
- int gcd(int x,int y)
- {
- if (x%y)
- {
- x=y;
- y=x%y;
- return gcd(x,y);
- }
- else return y;
- }
-
- int main()
- {
- int a,b,c;
- cin>>a>>b;
- c=gcd(a,b);
- cout<<c;
- return 0;
- }
复制代码
你整个gcd函数if与else写反了,改了一下。还有就是不用再去定义一个数来存放gcd()的返回值,直接输出其实就可以了
- #include <iostream>
- using namespace std;
- int gcd(int m,int n)
- {
- if (m % n == 0)
- {
- return n;//如果他们是倍数关系,那么就是最小的数
- }
- else
- {
- return gcd(n,m % n);//辗转相除法递归继续求
- }
- }
- int main()
- {
- int m,n;
- cin>>m>>n;
- cout<<gcd(m,n)<<endl;
- return 0;
- }
复制代码
|
|