binary_search_rec.sf 452 B

12345678910111213141516171819202122
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Binary_search
  4. #
  5. func binary_search(array, value, low, high) {
  6. high < low && return -1;
  7. var middle = (high+low / 2 -> int);
  8.  
  9. if (value < array[middle]) {
  10. return binary_search(array, value, low, middle-1);
  11. }
  12. elsif (value > array[middle]) {
  13. return binary_search(array, value, middle+1, high);
  14. }
  15.  
  16. return middle;
  17. }
  18. say binary_search(@(1..100), 23, 0, 99);