RosettaCodeData/Task/Binary-search/Perl/binary-search-2.pl
2016-12-05 22:15:40 +01:00

14 lines
419 B
Perl

sub binary_search {
my ($array_ref, $value, $left, $right) = @_;
return -1 if ($right < $left);
my $middle = int(($right + $left) >> 1);
if ($value == $array_ref->[$middle]) {
return $middle;
}
elsif ($value < $array_ref->[$middle]) {
binary_search($array_ref, $value, $left, $middle - 1);
}
else {
binary_search($array_ref, $value, $middle + 1, $right);
}
}