第49回【JavaScrip】フィボナッチ数

現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

JavaScript をゼロから勉強してみよう、のコーナー 49 回目です。

一番偉い顔をして踏ん反り返って座っていますが、来客があれば対応するのは LeoSaki(旦那)です。荷物が届いたときにも、保険の営業さんにも、同じ対応を心掛けています。しかし、いきなり、祈らせてください、はどうだろう。丁重にお帰りいただきましたが、一層嫌われる要因を自分たちで作っていることに気が付かないのだろうか。

それでは、今日も頑張ってみようと思います。

フィボナッチ数 (paizaランク D 相当)

1 行目に整数 N が与えられます。
N 番目までのフィボナッチ数を出力してください。

フィボナッチ数は

F_0 = 0
F_1 = 1
F_(n+2) = F_n + F_(n+1) (n は 0 以上)

とし、F_0 を 1 番目とします。


入力される値

N

1 行目に整数 N が与えられます。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

N 番目までのフィボナッチ数を出力してください。

F_0
F_1
...
F_{N-1}

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

* N は 3 以上 10 以下の整数


入力例

3

出力例

0
1
1

フィボナッチさん来ました。いろんな言語でやってきましたが、さて、JavaScrip ではどのように書けるだろうか。

JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  const n = Number(lines[0]);
  let L = Array(n).fill(0);
  L[1] = 1;
  for (let i = 2; i < n; i++) {
      L[i] = L[i-2] + L[i-1];
  }
  for (let i = 0; i < n; i++) {
      console.log(L[i]);
  }
});
Python
N = int(input())
F = [0] * N
F[0] = 0
F[1] = 1
for i in range(2, N):
    F[i] = F[i - 2] + F[i - 1]
for f in F:
    print(f)

最後に

Array 関数を用いて配列を初期化すると、初期値が undefined になる。fill メソッドを利用することでとりあえず、指定した値で初期化出来る。今後、かなり使うことになりそうなので、きちんと覚えておきます。

これで、配列メニューが終わりました。Python のときにも書いてましたが、長かった。模範解答がないので探り探りやっていて、なかなか大変でした。とても面白かったけれど!

引き続き、よろしくお願いいたします!

Python の第49回はこちら