0
私は2つで動作するサブルーチンを持っています。サブルーチン内でサブルーチンを呼び出すことはできますか?1つの関数で2つ以上の行列を乗算するにはどうすればよいですか? PERL
私は2つで動作するサブルーチンを持っています。サブルーチン内でサブルーチンを呼び出すことはできますか?1つの関数で2つ以上の行列を乗算するにはどうすればよいですか? PERL
再帰—のビットはちょうどこの変更された最も簡単な方法:これまで
my $ref1 = $_[0];
my $ref2 = $_[1];
:
my $ref1 = shift;
my $ref2 = shift;
と、この:これに
return @product;
:
をif(@_ > 0)
{ return &matrix(\@product, @_); }
else
{ return @product; }
しかし、最も効率的な方法は、さまざまな配列の次元を調べることから始めて、乗算を実行する最適な順序を決定することです。 (配列の乗算は可換性ではありませんが結合型であり、配列の次元がすべて同じでない場合は、A(BC)
は、(AB)C
よりもはるかに高価で、はるかに安価です。 、100×1、および1×100の場合、(AB)C
は中間ステップとして1行1列の行列を作成しますが、A(BC)
は中間ステップとして100行100列の行列を作成します)。
サブルーチンを変更しないでください –
[どのように私はperlで2つ以上の行列を乗算するのですか?](http://stackoverflow.com/questions/9475424/how-do-i-multiply-more-than-two-matrices- in-perl) – Toto