#!/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), $/;