Для заданного значения N я пытаюсь вывести соответствующее число Фибоначчи F(N). Мой сценарий, похоже, не входит в рекурсивную стадию. fibonnaci($number) не вызывает подпрограмму. Он просто выводит «фибоначчи (любое введенное число)».
Вот мой код:
#!/usr/bin/perl -w
use warnings;
use strict;
print "Please enter value of N: ";
my $number = <STDIN>;
chomp($number);
sub fibonacci
{
my $f;
if ( $number == 0 ) { # base case
$f = 0;
} elsif ( $number == 1 ) {
$f = 1;
} else { # recursive step
$f = fibonacci( $number - 1 ) + fibonacci( $number - 2 );
}
return $f;
}
print "\nf($number) = fibonacci($number)\n";
Пример вывода:
Please enter value of N: 4
f(4) = fibonacci(4)
user1:~>recursiveFib.pl
Please enter value of N: 5
f(5) = fibonacci(5)
user1:~>recursiveFib.pl
Please enter value of N: 10
f(10) = fibonacci(10)
user1:~>
Не знаю, где я ошибся. Любая помощь будет принята с благодарностью.
my ($number) = @_;
в качестве первой строки вfibonacci
. - person ooga   schedule 06.11.2014print
линия. Вынесите вызов функции из кавычек.print "\n$number: ", fibonacci($number), "\n";
- person ooga   schedule 06.11.2014