i seem to have a huge problem with finding a proper base case for my recursive program.... can anyone help.... i just can't get it...
here's some code....
// Task: Implement (MaxArray), discussed in the section "Finding the
// Largest Item in an Array," as a C++ function. What other
// recursive definitions of (MaxArray) can you describe?
//
// Preconditions: Every recursive call must make the original program
// smaller by at least a half. There must be a base case,
// which in fact has to be reached by one of the recursive
// calls to the function.
//
// Postconditions: At the end the result has to come out victorious and
// the program will point to the largest number.
//
////////////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------------
// Preprocessor directives...
#include <iostream>
#include <cstdlib>
using namespace std;
//---------------------------------------------------------------------------
// Global constant variables...
const int MaxIntegers = 10;
// int Highest;
//---------------------------------------------------------------------------
// Functions declarations...
int MaxArray(int Array[], int First, int Last);
int Compare(int Largest);
//---------------------------------------------------------------------------
int main()
{
cout << "This program will ask you to input 10 integers. \n"
<< "After you have done so, the computer will display all \n"
<< "of these integers and display the one that is the largest \n"
<< "out of these 10 integers. \n\n\n";
int Array[MaxIntegers];
for (int i = 0; i < MaxIntegers; i++)
{
cout << "Please enter integer # " << i + 1 << endl;
cin >> Array[i];
cout << endl; // flushes the buffer
}
cout << "These are the integers the you have entered: \n\n";
for (int j = 0; j < MaxIntegers; j++)
{
cout << Array[j] << ", ";
}
cout << "\n\n" << endl; // flushes the buffer
int First = 0;
int Last = (MaxIntegers - 1);
int Highest = MaxArray(Array, First, Last); // function call...
cout << "The largest integer is " << Highest << endl;
system("pause");
return 0;
}
//---------------------------------------------------------------------------
// Function definition (implementation)...
int MaxArray(int Array[], int First, int Last)
{
int Largest;
int Biggest;
int Mid = (Last + First) / 2; // finding midpoint
if (Last = Last)
{
Largest = Array[Last]; // not necessarily true...check it.!!!
Biggest = Compare(Largest); // have to send it here...somewhere...
} // need to have a different base case
else
{
MaxArray(Array, First, Mid); // recursive call...
MaxArray(Array, (Mid + 1), Last);
}
// i have to send the results somewhere to somehow compare
// then in term of size...... hmmm... ? and return the biggest one.
return Biggest;
}
//---------------------------------------------------------------------------
// Function definition (implementation)...
int Compare(int Largest)
{
int Biggest;
if (Largest > Biggest)
{
Biggest = Largest;
}
return Biggest;
}
//---------------------------------------------------------------------------
i think the problem is in the function MaxArray
in the "if" statement ... if(Last == First)
seems to be a wrong base case or maybe something else is wrong
can anyone give me a hand....????
thanx
matheo917