in reply to bushy recursion a good thing ?

Yes, because your recursion is strictly "tail end". So replace the recurive call with a statement to reset the parameters and jump back to the top. E.g. $low=$mid+1; redo; with the whole thing in a do.

An optomizing compiler would see "return foo(args)" within the same function foo and do just that for you. In languages like Lisp and Prolog, it's critical for the implementation.