Example 6-4. examples/subroutines/fibonacci.p6
#!/usr/bin/perl6
die "Usage: $PROGRAM_NAME number" if not @*ARGS;
say "Computing Fibonacci of {@*ARGS[0]}";
say "Result: " ~ fib_recursive(@*ARGS[0]);
say "Result: " ~ fib_r(@*ARGS[0]);
say "All: " ~ join " ", fib(@*ARGS[0]);
sub fib_recursive ($n) {
return 1 if $n == 1 or $n == 0;
return fib_recursive($n-1)+fib_recursive($n-2);
}
sub fib ($n) {
my @fibs;
@fibs.push(1) if $n > 0;
@fibs.push(1) if $n > 1;
for 2..$n {
@fibs.push(@fibs[-1]+@fibs[-2]);
}
return @fibs;
}
sub fib_r ($n) {
return 1 if $n == (1|0);
return fib_r($n-1)+fib_r($n-2);
}| Prev | Home (Copyright Gabor Szabo) Perl Training Israel | Next |
| Subroutines | Up | Subroutines |