AOJ0005 - GCD and LCM (再帰)

再帰分からないマンなので,今後に活かせるよう記事にして残しておきたいと思います.

最大公約数と最小公倍数 | Aizu Online Judge

この問題は入力された整数a, bの最大公約数と最小公倍数を求めるものです.
ユークリッドの互除法を使うことによって答えが出せます.
普通にwhile文とか使っても解けるのですが,今回は再帰で解きました.

AIZU ONLINE JUDGE: Code Review

#include <iostream>
using namespace std;

int gcd(int a, int b);

int main()
{
	int a, b;

	while (cin >> a >> b, cin.eof() != true){
		cout << gcd(a, b) << " " << a / gcd(a, b) * b << endl;
	}

	return (0);
}

int gcd(int a, int b)
{
	if (b == 0){
		return (a);
	}
	else {
		return (gcd(b, a % b));
	}
}

今回のでちょっとは再帰のイメージが掴めたか?
こんな感じ?↓

f:id:kurokoji:20160116003307j:plain