最大公約数のプログラム


ありがちな課題だけど、、、新人教育に使いました。

で、とりあえず自分でも書いてみる。

REPLで動かすと手っ取り早いのでrubyで書いてみる。

自分だったら再帰で書くのでこんな感じ。

def gcd(m, n)
	(m % n == 0) ? n : gcd(n, m % n)
end

実際のところ、この時はまだ再帰を教えてないから、ループで書いてもらいます。
こんな感じでしょうか?

def gcd(m, n)
	while m % n != 0 do
		m, n = n, m % n
	end
	
	n
end

気持ち的には動くかどうか不安になるプログラムです。
なんか、変数を更新し続けるところが嫌な気持ちになりますね。

for文とかeachなら良いのですが、while文のように何回繰り返えされるかわからないループはなんか気持ちがどんよりします。

こういう時に再帰で書くのって見通しが良くなりますなあ。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です