对于给定值N,我试图输出相应的斐波那契数字F(N)。我的脚本似乎没有进入递归阶段。 fibonnaci($ number)不调用子程序。它只是输出“斐波纳契(无论输入什么数字)”。输入数字并递归输出Fibonacci数字Perl
这里是我的代码:
#!/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'中的第一行。 – ooga 2014-11-06 03:40:48
我很欣赏这种回应。即使添加该行,我仍然可以得到相同的结果。有任何想法吗? @ooga – chomp 2014-11-06 03:45:39
这是你的'打印'行。从引号中取出函数调用。 'print'\ n $ number:“,斐波那契($ number),”\ n“;' – ooga 2014-11-06 03:52:39