Solved

# Recursive Function Problem

Posted on 2011-02-22

The function binarySearch used to be iterative, and now I'm trying to make it recursive. However, for some reason, I get an error when I try to pass the 2nd parameter... can anyone give me a hint as to what I'm doing wrong?

Code:

#include <iostream>

using namespace std;

int binarySearch(int, int *, int);

int main()

{

int myList[10] = {1,7,13,17,24,38,45,50,100,1000};

int num;

int loc;

int i;

cout << "The list you entered is: " << endl;

for (i=0; i < sizeof(myList)/sizeof(int); i++)

cout << myList* << " ";*

cout << endl;

cout << "Enter search item: ";

cin >> num;

cout << endl;

binarySearch(num, myList, sizeof(myList)/sizeof(int));

loc = binarySearch(num, myList, sizeof(myList)/sizeof(int));

if (loc != -1)

cout << "Item found at position " << loc << endl;

else

cout << "Item not in the list" << endl;

system("pause");

return 0;

}

int binarySearch(int item, int *list, int length)

{

int first = 0;

int last = length - 1;

int mid;

if (first <= last)

{

mid = (first + last) / 2;

if (list[mid] == item)

return mid;

else if(list[mid] > item)

return binarySearch(item, first, mid - 1);

else

return binarySearch(item, mid + 1, last);

}

else

return -1;

}