對於給定值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