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 @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);
}
}