如何在一个函数中乘以2个以上的矩阵? PERL

时间:2012-02-29 02:08:58

标签: arrays perl reference matrix subroutine

我有一个与两个一起工作的子程序。我可以在子程序中调用子程序吗?

1 个答案:

答案 0 :(得分: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 -by-100矩阵作为中间步骤。)