メモ化


 メモ化を行います。関数の引数と戻り値のペアを記録して、同一引数の関数呼び出しの場合には記録した値を返すようにします。2回目以降の関数呼び出しに対しては関数の処理を実行しなくなるので処理を高速化できる場合があります。
use strict;
use warnings;
use Memoize;

memoize('fibonacci'); # fibonacci関数をメモ化の対象にする

print fibonacci(30), "\n";

sub fibonacci {
    my $n = shift;
    
    if ($n == 0) {
        return 0;
    }
    if ($n == 1) {
        return 1;
    }
    return fibonacci($n - 2) + fibonacci($n - 1);
}

関連項目

なし