summaryrefslogtreecommitdiff
path: root/perl/p2.pl
diff options
context:
space:
mode:
Diffstat (limited to 'perl/p2.pl')
-rwxr-xr-xperl/p2.pl34
1 files changed, 17 insertions, 17 deletions
diff --git a/perl/p2.pl b/perl/p2.pl
index 6a226e1..06c173a 100755
--- a/perl/p2.pl
+++ b/perl/p2.pl
@@ -5,26 +5,26 @@ use warnings;
# Functional (naïve)
sub iter1 {
- my ($fibs, $acc) = @_;
- my ($a, $b) = @$fibs;
- if ($a > 4_000_000) {
- return $acc;
- } else {
- iter1([$b, $a+$b], $a & 1 ? $acc : $acc + $a);
- }
+ my ($fibs, $acc) = @_;
+ my ($a, $b) = @$fibs;
+ if ($a > 4_000_000) {
+ return $acc;
+ } else {
+ iter1([$b, $a+$b], $a & 1 ? $acc : $acc + $a);
+ }
}
print iter1([1, 2], 0), "\n";
# Functional (tail recursive)
sub iter2 {
- my ($fibs, $acc) = @_;
- my ($a, $b) = @$fibs;
- if ($a > 4_000_000) {
- return $acc;
- } else {
- @_ = ([$b, $a+$b], $a & 1 ? $acc : $acc + $a);
- goto &iter2;
- }
+ my ($fibs, $acc) = @_;
+ my ($a, $b) = @$fibs;
+ if ($a > 4_000_000) {
+ return $acc;
+ } else {
+ @_ = ([$b, $a+$b], $a & 1 ? $acc : $acc + $a);
+ goto &iter2;
+ }
}
print iter2([1, 2], 0), "\n";
@@ -32,8 +32,8 @@ print iter2([1, 2], 0), "\n";
my ($a, $b) = (1, 2);
my $resp = 0;
do {
- $resp += $a unless ($a & 1);
- ($a, $b) = ($b, $a+$b);
+ $resp += $a unless ($a & 1);
+ ($a, $b) = ($b, $a+$b);
} while ($a <= 4_000_000);
print "$resp\n"