我想在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