0
我有一個與兩個一起工作的子程序。我可以在子程序中調用子程序嗎?如何在一個函數中乘以2個以上的矩陣? PERL
我有一個與兩個一起工作的子程序。我可以在子程序中調用子程序嗎?如何在一個函數中乘以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
貴得多,或者便宜得多,例如,如果維數是1乘100 ,100乘1和1乘100,則(AB)C
創建1乘1矩陣作爲中間步驟,而A(BC)
創建100乘100矩陣作爲中間步驟。)
您需要不修改子程序 – 2012-02-29 02:28:52
可能的重複[如何在perl中乘以兩個以上的矩陣?](http://stackoverflow.com/questions/9475424/how-do-i-multiply-more-than-two-matrices-在-perl的) – Toto 2012-02-29 08:56:35