動的計画法・再帰 / Fibonacci(フィボナッチ数列)

同じ部分問題が
何度も現れる。

再帰で Fibonacci 数をそのまま求めると、同じ計算を何度も繰り返します。メモ化や DP の必要性を示す代表例です。

DP / 再帰表や木で理解定番教材

目次

このページの目次

このページでわかること

先に知っておくポイント

1. 状態が何か
2. 前の状態をどう使うか
3. なぜその漸化式になるか

概要

概要

再帰で Fibonacci 数をそのまま求めると、同じ計算を何度も繰り返します。メモ化や DP の必要性を示す代表例です。

考え方

擬似コード

fib(n) = fib(n-1) + fib(n-2)
base cases: fib(0), fib(1)

要点

要点まとめ

Naive

O(2^n)

Memoized

O(n)

主題

重複部分問題

接続

DP

補足

向いている場面と注意点

教材価値

遅さの理由が再帰木ではっきり見えます。

改善

メモ化で一気に変わります。

説明

同じ fib(3) が何回出るかを数えるとよいです。

動きで確認

動きを見てたしかめる

ここでは「状態が何か」を見ながら、上で読んだ内容を動きと結びつけます。

注目決定的確定

次に見る

次に見るページ

比較すると違いがわかりやすいページを先に置いています。