2012-02-29 53 views
0

我有一個與兩個一起工作的子程序。我可以在子程序中調用子程序嗎?如何在一個函數中乘以2個以上的矩陣? PERL

+0

您需要不修改子程序 – 2012-02-29 02:28:52

+0

可能的重複[如何在perl中乘以兩個以上的矩陣?](http://stackoverflow.com/questions/9475424/how-do-i-multiply-more-than-two-matrices-在-perl的) – Toto 2012-02-29 08:56:35

回答

3

最簡單的方法是有點遞歸—的只是改變這一點:

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矩陣作爲中間步驟。)