フィボナッチ整列を求めるようなサンプルコード

とある事情で書いたけど、本当に必要だったのは違うものだった。
まぁせっかくなので、ブログに書く。

use strict;
use warnings;
use Math::BigInt;

{
    my @fibonacci_number = ();

    sub fibonacci
    {
        my $num = shift;

        unless ( $fibonacci_number[$num] ) {
            if ( $num <= 1 ) {
                $fibonacci_number[$num] = Math::BigInt->new( $num );
            }
            else {
                $fibonacci_number[$num] = fibonacci( $num-1 ) + fibonacci( $num-2 );
            }
        }

        return $fibonacci_number[$num];
    }
}

print fibonacci( 1 ), "\n";
print fibonacci( 10 ), "\n";
print fibonacci( 100 ), "\n";

桁が大きすぎると、指数表記されてしまうのでMath::BigInt使いました。