読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

Project Euler - Problem 25

Problem 25

フィボナッチ数が1000桁を越える最初の項は何項目かを調べる問題.

use strict;
use warnings;
use bigint;
use Memoize;

memoize('fibonacci');

my $length = 1000;
my $n = 1;

while (length fibonacci($n) < $length) {
    $n++;
}

print "$n\n";

sub fibonacci {
    my $n = shift;

    return 1 if $n == 1 || $n == 2;

    return fibonacci($n-1) + fibonacci($n - 2);
}

Memoizeを使ってチョチョイと実装.

最初, 「1000桁を越える」のに'use bigint'を書き忘れていて, 処理が延々と続いてしまったというのはここだけの話である.