我正在尝试在 Perl 中执行递归函数。所以,我必须使用引用传递参数。我已经尝试了各种方式,但它不起作用。
请注意,这@b
是一个矩阵。
错误重复出现并且是Use of uninitialized value in numeric eq (==) at LCS.pl line ...
。我不知道它是指$i
or$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 @b=@$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);
}
}