#はじめに
Qiitaの競技プログラミング研究月間ということで、アルゴリズムの記事を書いています。
今回はFizzBuzz問題をまとめました。
JavaScriptでアルゴリズムの勉強をされている方の参考になれば幸いです。
記事を順次まとめていきますので、その他の記事についてはマイページからご覧ください。
#FizzBuzz
引数で与えた数値が3の倍数であれば"fizz"、5の倍数であれば"buzz"、15の倍数である場合は"fizzbuzz"を返してください。
fizzBuzz(5);
1
2
fizz
4
buzz
##解答
n回forを回して、剰余が0になったときに"fizz", "buzz"などを出力するようにします。
index.js
function fizzBuzz(n) {
for (i = 1; i <= n; i++) {
if (i % 3 === 0 && i % 5 === 0) {
console.log('fizzbuzz');
} else if (i % 3 === 0) {
console.log('fizz');
} else if (i % 5 === 0) {
console.log('buzz');
} else {
console.log(i);
}
}
}
再帰呼び出しを使うと以下のように書けます。
function fizzbuzz(n) {
if (n > 1)
fizzbuzz(n-1);
if (n % 3 == 0 && n % 5 == 0)
console.log("Fizz,Buzz");
else if (n % 3 == 0)
console.log("Fizz");
else if (n % 5 == 0)
console.log("Buzz");
else
console.log(n);
}
ネット上に腐るほど転がっているFizzBuzz問題の解答ですが、自分用のメモとして一応書いてみました。
計算量の観点だとどの解き方が一番いいんだろう...