[英]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.