見出し画像

【アルゴリズム】フィボナッチ数列をjavascriptで実装する

javascriptで実装(再帰)

function fib(n) {
 if (n < 3) return 1;
 return fib(n - 1) + fib(n - 2);
}

O(2^n)

再帰で大事なのは2点

・終了条件の設定

・引数が毎回変わる

ここでの終了条件とは、if (n < 3)に達したら終了。これがないと無限ループになってしまう。whileに終了条件があるのと一緒です。

引数は呼び出す度に、減算していますね。

が、遅い。。。

メモ化

function fibonacci(position, memo = []) {
 if (position < 3) return 1;
 if (memo[position]) return memo[position];
 memo[position] =
   fibonacci(position - 1, memo) + fibonacci(position - 2, memo);
 return memo[position];
}

O(n)

一度計算したらキャッシュに入れる(memo[position])。

再帰が、よく分からない人は、カウントダウンする単純な関数を作ってみよう。

function countDown(num) {
//終了条件
 if (num <= 0) return;
 console.log(num);
//値を変更
 countDown(num - 1);
}

countDown(10);


アルゴリズムは図解すると分かりやすいです。ってか図解しないとわからない。。

再帰でスタックの積み方を詳しく知りたい人は、この本が超オススメです。



この記事が気に入ったらサポートをしてみませんか?