FizzBuzz(通常 / 再帰 / クラス)
11302 ワード
はじめに
なんか書き殴りたくなったので書きます。
プログラム始めたばかりの時は、
「オブジェクト指向…??」
「再帰???」
みたいな印象だったのですが、気付いたら書けるようになってました。嬉しい。
備忘録的に残しておきます。
壮大なもの書こうかと思ったんですが、初心に帰ってFizzBuzzで
補足
①この記事では「これがFizzBuzzだ」みたいな話はしません
定義は下記に記しますがその定義があっているかどうかは議論しません。
②再帰的な書き方だったりクラスの書き方はもっと良い方法あると思います。
そんな時は是非マサカリが欲しいです。
定義
・1~100を順番に表示する
・3と5の倍数の場合[FizzBuzz]と表示する
・3の倍数の場合[Fizz]と表示する
・5の倍数の場合[Buzz]と表示する
通常ver
for (let i = 1; i <= 100; i++) {
const Fizz = 3;
const Buzz = 5;
if (i % (Fizz * Buzz) === 0) {
console.log(i, "FizzBuzz");
} else if (i % Fizz === 0) {
console.log(i, "Fizz");
} else if (i % Buzz === 0) {
console.log(i, "Buzz");
} else {
console.log(i);
}
}
まぁ他にも書き方あると思いますがとりあえず次。
再帰ver
const FizzBuzz = (i, lastNum) => {
const Fizz = 3;
const Buzz = 5;
if (i % (Fizz * Buzz) === 0) console.log(i, "FizzBuzz");
if (i % Fizz === 0) console.log(i, "Fizz");
if (i % Buzz === 0) console.log(i, "Buzz");
if (i === lastNum) return;
console.log(i);
return FizzBuzz((i += 1), lastNum);
};
FizzBuzz(1, 100);
書いてから気付いたんですがFizzBuzzが再帰に向いてない気がする。
なんか書いてて再帰の良さみたいなものを表現できなかった…
クラスver
class CheckNumbers {
constructor(i, Fizz, Buzz) {
this.i = i;
this.Fizz = Fizz;
this.Buzz = Buzz;
}
main() {
this.checkFizzBuzz();
if (this.i === 100) return;
return this.main((this.i += 1));
}
checkFizzBuzz() {
if (this.i % (this.Fizz * this.Buzz) === 0) console.log(this.i, "FizzBuzz");
if (this.i % this.Fizz === 0) console.log(this.i, "Fizz");
if (this.i % this.Buzz === 0) console.log(this.i, "Buzz");
if (this.i !== 100) console.log(this.i);
}
}
new CheckNumbers(1, 3, 5).main();
なんかもっとよく書こうと書いてるうちに飽きてしまった…
もっとええ書き方あるで!っていう場合は是非教えてくださいm_ _m
Author And Source
この問題について(FizzBuzz(通常 / 再帰 / クラス)), 我々は、より多くの情報をここで見つけました https://qiita.com/baan_nasebanaru/items/96ff32003d49835f55b6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .