This is just so frustrating for me. I finished the chapter on recursion and thought, wrongly, that I was finished with recursion. Well, I am not. I am rewriting a sequential seach function of an array-based list class as an ADT. I understand that I have to find the base case(s), and taking the original function and calling it again with a smaller range of elements from the list. I think I have successfully done that with what I have written, but won't know until I can find the final piece which is making the list smaller.

The class has private members of a list pointer (elem Type *list), length and maxSize. The function accepts a reference to item as its argument. So, that is all I can include in the recursive call to the function, so HOW do I get the list one element smaller in the recursive call??? Recursion will be the death of me in programming.


My code is:
Code:
template <class elemType>
int arrayListType<elemType>::seqSearch(const elemType& item)
{
	int loc;
	if (length == 0 || loc == length)
		return -1;
	else if (list[loc] == item)
		return loc;
	else
	{
		return seqSearch(item);  //THIS IS MY PROBLEM STATEMENT - MENTAL BLOCK!!!
	}

} //end seqSearch
Thanks for the help.