【发布时间】:2012-03-18 13:20:11
【问题描述】:
我有一个与两个一起工作的子例程。可以在子程序内调用子程序吗?
【问题讨论】:
-
子程序不用修改
标签: arrays perl reference matrix subroutine
我有一个与两个一起工作的子例程。可以在子程序内调用子程序吗?
【问题讨论】:
标签: arrays perl reference matrix subroutine
最简单的方法是一点递归——只需改变这个:
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 -by-100、100-by-1 和 1-by-100,然后 (AB)C 创建一个 1-by-1 矩阵作为中间步骤,而 A(BC) 创建一个 100-by-100 矩阵作为中间步骤步骤。)
【讨论】: