Horner's rule for polynomial evaluation: Difference between revisions

Content added Content deleted
(→‎{{header|Perl}}: adding recursive version)
(→‎Recursive version: avoid relying on evaluation order for +)
Line 921: Line 921:
===Recursive version===
===Recursive version===
<lang perl>sub horner {
<lang perl>sub horner {
return 0 unless my @coeff = @{shift()};
my ($coeff, $x) = @_;
my $x = shift;
@$coeff and
shift(@coeff) + $x * horner( [@coeff], $x );
$$coeff[0] + $x * horner( [@$coeff[1 .. $#$coeff]], $x )
}
}