package main
import "fmt"
func binarySearchRecursive(arr []int, target int, low int, high int) int {
if low > high {
return -1 // target not found
}
mid := low + (high-low)/2
if arr[mid] == target {
return mid // target found
} else if arr[mid] > target {
return binarySearchRecursive(arr, target, low, mid-1) // search left half
} else {
return binarySearchRecursive(arr, target, mid+1, high) // search right half
}
}
func main() {
arr := []int{1, 3, 5, 7, 9, 11, 13}
target := 9
index := binarySearchRecursive(arr, target, 0, len(arr)-1)
if index != -1 {
fmt.Printf("Target %d found at index %d\n", target, index)
} else {
fmt.Printf("Target %d not found\n", target)
}
}
stop recursion if search range is invalid (target not found)
mid := low + (high-low)/2
calculate middle index to split search range
check if middle element is the target
return binarySearchRecursive(arr, target, low, mid-1)
search left half if target is smaller than mid value
return binarySearchRecursive(arr, target, mid+1, high)
search right half if target is greater than mid value
Target 9 found at index 4