第十三周 用递归的方法求两个数的最大公约数

1./*           
2.*程序的版权和版本声明部分:           
3.*Copyright(c)2013,烟台大学计算机学院学生           
4.*All rights reserved.           
5.*文件名称:           
6.*作者:尚振伟         
7.*完成日期:2013年 11月24日           
8.*版本号:v0.1          
9.*对任务及求解方法的描述部分:           
10.*输入描述:无 
11.*问题描述:
12.*程序输入:12   33
13.*程序输出:3
14.*问题分析:       
15.*算法设计:        
16.*/      
17.我的程序:  

#include <iostream>
using namespace std;
int gcd(int,int);
int main()
{
    int a,b,c;
    cout<<"请输入两个整数:"<<endl;
    cin>>a>>b;
    c=gcd(a,b);
    cout<<"你输入的两个数的最大公约数为:"<<c<<endl;
    return 0;
}
int gcd(int x,int y)
{
    int m,n;   //n代表x,y的最大公约数
    if(x<y)
    {
        m=x;
        x=y;
        y=m;
    }
    if(y==0)
    {
        n=x;
    }
    else
    {
        n=gcd(y,x%y);
    }
    return n;
}


结果展示:

第十三周 用递归的方法求两个数的最大公约数_第1张图片

心得体会:感觉用递归和以前用循环的方法做差不多,这个法最后那个n=gcd(y,x%y)不容易想出来。

你可能感兴趣的:(第十三周 用递归的方法求两个数的最大公约数)