MOOC清华《程序设计基础》第5章第3题:用递归算法求最大公约数

题目描述

以递归思想计算最大公约数gcd(m,n)。

tips:若m%n等于0,则gcd(m,n)等于n;否则gcd(m,n)=gcd(n,m%n)

输入格式

每一行输入两个数m,n(均为正整数),中间以空格隔开,可能会有多行输入

输出格式

输出最大公约数

样例输入

12 16
9 7
2 10
样例输出

4
1
2

#include <iostream>
using namespace std;

int a[10] = {0};
int m[10] = {0};
int n[10] = {0};

int i = 0;

int main()
{
	int gcd(int m, int n);
	while(cin >> m[i] >> n[i])
	{
		a[i] = gcd(m[i], n[i]);
		i++;
	}
	for(int j = 0; j < i; j++)
		cout << a[j]<< endl; //这个地方下标不要写成i,这是常犯错误
	return 0;
}

int gcd(int m, int n)
{
	int g;
	if(m < n)
	{
		int temp = m;
		m = n;
		n = temp;
	}
	
	if(m % n == 0)
		return n;
	else 
	{
		int temp = m % n;
		g = gcd(n, temp);
		return g;	
	}
}



posted on 2017-10-05 18:17  sunshineman1986  阅读(336)  评论(0)    收藏  举报

导航