BinarySearch(A, key, begin, end)
if (begin > end)
return false
mid = (begin+end)/2
if (A[mid] == key) // base case
return true or found
if (A[mid] > key)
BinarySearch(A,key, begin, mid-1)
else
BinarySearch(A,key, mid+1, end)
A = 1, 3, 7, 10, 15, 19
Search for 1
BinarySearch(A,1, 0, 5)
mid = (0+5)/2 = 2
A[2] = 7 <> 1
7 > 1
BnarySearch(A, 1, 0, 1)
mid = (0+1)/2 = 0
A[0] = 1 == 1
Return found.
Search for 3
BinarySearch(A,1, 0, 5)
mid = (0+5)/2 = 2
A[2] = 7 <> 3
7 > 3
BnarySearch(A, 1, 0, 1)
mid = (0+1)/2 = 0
A[0] = 1 <> 3
Return found.
BinarySearch(A,3, 1,1)
mid = (1+1)/2 = 1
A[1] == 3 found
Search for 3
BinarySearch(A,4, 0, 5)
mid = (0+5)/2 = 2
A[2] = 7 <> 4
7 > 4
BnarySearch(A, 4, 0, 1)
mid = (0+1)/2 = 0
A[0] = 1 <> 4
Return found.
BinarySearch(A,4, 1,1)
mid = (1+1)/2 = 1
A[1] <> 4
BinarySearch(A,4, 2,1)
Recursive multiply
Multiply(int a, int b) , a >= 0
if (a == 0)
return 0
else
return b + Multiply(a-1,b)
/*
NO THIS IS NOT RECURSIVE
for(i=1;i<a;i++) {
answer += b;
}
*/