[英]Sum Squares by lists in Perl
码
sub sqrsumfunc {
my $sum; $sum += ($_) * ($_) for @_; $sum;
}
我尝试用元素乘法及其求和来代替
use strict;
use warnings;
use List::Util qw(sum);
my @x = @{ $_[0] };
my $Sxx = sum( @x * @x );
但实际结果有很多偏差。
如何用Perl标准函数替换第一个函数?
你的第二块代码不是作为子程序编写的,因此没有@_
数组可供使用,而my @x = @{ $_[0] }
将无效。 它也与第一个块不同,因为它期望引用一个值数组,而第一个子例程只需要一个值列表作为参数。
主要问题是你在写作
my $Sxx = sum( @x * @x );
它正方形的数组大小 。 你需要的是什么
my $sum_xx = sum map $_ * $_, @x;
或者,如果您愿意
my $sum_xx = sum map { $_ * $_ } @x;
这只是同一构造的不同语法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.