我想在Perl中做一個遞歸函數。所以,我必須使用參考傳遞參數。我嘗試了各種方式,但不起作用。通過引用遞歸函數傳遞參數
請注意,@b
是一個矩陣。
錯誤重複,並且是Use of uninitialized value in numeric eq (==) at LCS.pl line ...
。我不知道它是指$i
還是$j
或@b
。
下面是代碼:
$#ARGV+1 == 2 || die "USAGE: [PROGRAM] [v] [w]\n";
my $one = shift;
my $two = shift;
my @v = split("",$one);
my @w = split("",$two);
my $n = $#v+2;
my $m = $#w+2;
my @b;
#### DO VARIOUS OPERATIONS...
&printLCS(\$n,\$m,\@b);
##################################################
sub printLCS
{
my $i = shift;
my $j = shift;
my $arrayref = shift;
my @[email protected]$arrayref;
if(($$i == 0) || ($$j == 0)) {
return;
}
if($b[$$i][$$j] == 3) { #diag
&printLCS(\$i-1,\$j-1,\@b);
print $v[$$i];
}
elsif($b[$$i][$$j] == 1) { #up
&printLCS(\$i-1,\$j,\@b);
}
else { # left
&printLCS(\$i,\$j-1,\@b);
}
}
總是使用'use strict;使用警告;' – ikegami 2013-03-25 09:16:50
請不要回答與另一個問題的問題!但是,我總是使用嚴格的,變數和警告。 – Malo 2013-03-25 09:23:33
那麼爲什麼你沒有提到你'不能使用字符串(「30762083」)作爲SCALAR ref而「strict refs」在使用? – ikegami 2013-03-25 09:27:13