>>910 Perl5
sub isfib {
$v = shift;
%h = map{$_ => $_} @s = (0,1);
do {
$f = $s[-2] + $s[-1];
push @s, $f;
$h{$f} //= @s;
} while $f < $v;
($v, $h{$v} // -1);
}
printf "isfib $_ = (%d,%d)\n", isfib $_ for 0..5;
実行結果
$ perl 14_910_isfib.pl
isfib 0 = (0,0)
isfib 1 = (1,1)
isfib 2 = (2,4)
isfib 3 = (3,5)
isfib 4 = (4,-1)
isfib 5 = (5,6)
sub isfib {
$v = shift;
%h = map{$_ => $_} @s = (0,1);
do {
$f = $s[-2] + $s[-1];
push @s, $f;
$h{$f} //= @s;
} while $f < $v;
($v, $h{$v} // -1);
}
printf "isfib $_ = (%d,%d)\n", isfib $_ for 0..5;
実行結果
$ perl 14_910_isfib.pl
isfib 0 = (0,0)
isfib 1 = (1,1)
isfib 2 = (2,4)
isfib 3 = (3,5)
isfib 4 = (4,-1)
isfib 5 = (5,6)