问题及代码:
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:test.cpp
*作 者:陈文青
*完成日期:2014年11月16日
*版 本 号:v1.0
*
*问题描述:编程序,用递归函数求出两个数的最大公约数。(包括编main函数,调用定义的递归函数)
*程序输入:两个整数,m,n
*程序输出:一个整数,表示m和n的最大公约数
*/
#include <iostream>
using namespace std;
int gys(int x, int y); //自定义函数声明
int main()
{
int m,n;
cout<<"请输入两个整数:";
cin>>m>>n;
cout<<"它们的最大公约数为:";
cout<<gys(m,n); //自定义函数调用
return 0;
}
int gys(int a, int b)
{
int t,g;
if (a < b) //a,b中取b为小的值
{
t=a;
a=b;
b=t;
}
if (b==0) //考虑其中一个值为0的时候
g=a;
else
g=gys(b,a%b); //递归
return g;
}
运行结果:
知识点总结:
利用递归函数解决数学问题
学习心得:
一个成功的程序需要有严密的逻辑思维,例如这个程序,考虑a b的值的交换,考虑其中一个值为0的时候。然后在递归调用的时候一定要谨慎;
最后结合单步调试能使编程更加得心应手