问题及代码:
/*
* Copyright (c) 2014, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作 者:何小乐
* 完成日期:2014年 11 月 17 日
* 版 本 号:v1.0
*
* 问题描述:用递归求出两个数的最大公约数
* 输入描述:两个整型数
* 程序输出:这两个数的最大公约数
*/
#include <iostream>
using namespace std;
int gcd(int,int);
int main()
{
int x,y;
cin>>x>>y;
cout<<gcd(x,y)<<endl;
return 0;
}
int gcd(int a,int b)
{
if(b==0) //0和其他数的公约数是其他数
return a;
else
gcd(b,a%b);
}
运行结果:
学习小结:
做这个项目时,我写了一个很像以前项目求最大公约数的算法,只是在gcd函数内调用了gcd函数,我怀疑它是否算递归,遂询问了贺老,指点一番后,有所知亦有所不知。
知:可以把程序读懂
不知:我想不到可以用b==0作为递归的结束条件,而不需要中间变量
待我有空慢慢品味这个算法。