50 lines
1.0 KiB
Perl
50 lines
1.0 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use warnings;
|
|
use strict;
|
|
|
|
sub fibonaccil {
|
|
my ($count, $aref) = @_;
|
|
|
|
unless ($aref) {
|
|
# first call - initialize
|
|
$aref = [1,1];
|
|
$count -= scalar(@{$aref});
|
|
}
|
|
|
|
if ($count--) {
|
|
my $next = $aref->[-1] + $aref->[-2];
|
|
push @{$aref}, $next;
|
|
return fibonaccil($count, $aref);
|
|
} else {
|
|
return wantarray?@{$aref}: $aref->[-1];
|
|
}
|
|
}
|
|
|
|
print scalar(fibonaccil(10)), "\n";
|
|
print scalar(fibonaccil(10, [2, 4])), "\n";
|
|
my @sequence = fibonaccil(10);
|
|
print "Sequence: @sequence \n";
|
|
|
|
|
|
sub fibonacci2 {
|
|
my ($count, $internal) = @_;
|
|
|
|
if ($count <= 2) {
|
|
return $internal ? [1,1] : 1;
|
|
} else {
|
|
my $result = fibonacci2($count -1, 'internal');
|
|
my $next = $result->[-1] + $result->[-2];
|
|
|
|
if ($internal) {
|
|
push @{$result}, $next;
|
|
return $result;
|
|
} else {
|
|
return $next;
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach (1..20) {
|
|
print "Element $_ is ", fibonacci2($_), "\n";
|
|
} |