#!/usr/bin/perl -w
use strict;
sub fibonacci {
my ($low, $high) = (1, 0);
return sub {
($low, $high) = ($high, $low + $high);
return $high;
};
}
my $iterator = fibonacci();
print $iterator->(), $/ for 1 .. 20;
####
sub fibonacci {
my $fib = shift;
return $fib if ! $fib || $fib == 1;
my ($low, $high) = (1, 0);
my $iterate = sub {
($low, $high) = ($high, $low + $high);
return $high;
};
$iterate->() for 1 .. $fib;
return $high;
}
print fibonacci(0), $/;
####
#!/usr/bin/perl -w
use strict;
sub fibonacci {
my $fib = shift;
return $fib if ! $fib || $fib == 1;
my ($low, $high) = (1, 0);
for (1 .. $fib) {
($low, $high) = ($high, $low + $high);
}
return $high;
}
print fibonacci(20), $/;