Project 11: Multiplier The goal of this program is to practice using recursion.
ID: 3833800 • Letter: P
Question
Project 11: Multiplier
The goal of this program is to practice using recursion. The Multiplier class performs the mathematical operation a * b in two ways: one is iterative (using loops or control flow) and one is recursive (gets to call itself over and over again). You might not think that addition can be implemented using recursion, but if you follow the cases shown below, it can be done recursively:
BASE CASE: if ( a == 0 || b == 0 ) return( 0 );
BASE CASE: if ( b == 1 ) return( a );
BASE CASE: if ( a == 1 ) return( b );
RECURSIVE CASE: return( a + RecursiveATimesB( a, b - 1 ) );
HINT: You'll probably need to create some additional methods...
Multiplier Class
Sample Driver Code
Multiplier
Multiplier( int a, int b );
int getA() const;
int getB() const;
int RecursiveATimesB() const;
int IterativeATimesB() const;
int myValueofA;
int myValueofB;
// All these calls should produce the
// exact same answer...
// namely, the number 10!
cout << ten.RecursiveATimesB() << endl;
cout << ten.IterativeATimesB() << endl;
cout << ten.RecursiveATimesB() << endl;
Remainder twenty( 4, 5 );
cout << twenty.RecursiveATimesB() << endl;
cout << twenty.IterativeATimesB() << endl;
cout << twenty.RecursiveATimesB() << endl;
Help me with this c++
Multiplier Class
Sample Driver Code
Multiplier
Multiplier( int a, int b );
int getA() const;
int getB() const;
int RecursiveATimesB() const;
int IterativeATimesB() const;
int myValueofA;
int myValueofB;
// All these calls should produce the
// exact same answer...
// namely, the number 10!
cout << ten.RecursiveATimesB() << endl;
cout << ten.IterativeATimesB() << endl;
cout << ten.RecursiveATimesB() << endl;
Remainder twenty( 4, 5 );
cout << twenty.RecursiveATimesB() << endl;
cout << twenty.IterativeATimesB() << endl;
cout << twenty.RecursiveATimesB() << endl;
Explanation / Answer
#include <iostream>
using namespace std;
class Multiplier
{
public:
Multiplier( int a, int b )
{
myValueofA = a;
myValueofB = b;
}
int getA() const
{
return myValueofA;
}
int getB() const
{
return myValueofB;
}
int RecursiveATimesB() const
{
return RecursiveATimesB(getA(), getB());
}
int IterativeATimesB() const
{
int b = getB();
int a = getA();
if (b < 0)
{
a = -1*a;
b = -1*a;
}
int result = 0;
for(int i = 0; i < b; i++)
{
result += a;
}
return result;
}
private:
int myValueofA;
int myValueofB;
int RecursiveATimesB(int a, int b) const
{
if ( a == 0 || b == 0 ) return( 0 );
if ( b == 1 ) return( a );
if ( a == 1 ) return( b );
return( a + RecursiveATimesB( a, b - 1 ) );
}
};
int main()
{
Multiplier ten( 5, 2 );
cout << ten.RecursiveATimesB() << endl;
cout << ten.IterativeATimesB() << endl;
cout << ten.RecursiveATimesB() << endl;
Multiplier twenty( 4, 5 );
cout << twenty.RecursiveATimesB() << endl;
cout << twenty.IterativeATimesB() << endl;
cout << twenty.RecursiveATimesB() << endl;
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.