examples/advanced/07_binary_search.cat
# Binary search (recursive)
# Shows boundary handling, recursion, multiple conditions, and is well-suited for tail-call optimization.
binary_search = (arr, target, left=0, right=None) => {
if right == None { right = len(arr) - 1 }
if left > right {
-1
} else {
mid = (left + right) // 2
value = arr[mid]
if value == target {
mid
} elif value < target {
binary_search(arr, target, mid + 1, right)
} else {
binary_search(arr, target, left, mid - 1)
}
}
}
values = list(1, 3, 5, 7, 9, 11, 13, 15)
print("index of 7 =", binary_search(values, 7)) # 3