1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
Alina [70]
4 years ago
11

Write code to complete PrintFactorial()'s recursive case. Sample output if userVal is 5:5! = 5 * 4 * 3 * 2 * 1 = 120

Computers and Technology
1 answer:
enot [183]4 years ago
7 0

Answer:

Here is the C++ program:

#include <iostream>  //to use input output functions

using namespace std;   //to access objects like cin cout

void PrintFactorial(int factCounter, int factValue){  // method definition

  int nextCounter = 0;  // initialize value of nextCounter by 0

  int nextValue = 0;   // initialize value of nextValue by 0

  if (factCounter == 0) { //base case 1: 0! = 1          

     cout << "1" << endl;    }  //displays 1 in the output

  else if (factCounter == 1) {  //base case 2: 1! = 1  

     cout << factCounter << " = " << factValue << endl;    } //displays 1 in result    

  else {  //recursive case                          

     cout << factCounter << " * ";

     nextCounter = factCounter - 1;  //decrements factCounter by 1

     nextValue = nextCounter * factValue;  // multiplies values of nextCounter and factValue and assigns the result to nextValue

PrintFactorial( nextCounter,  nextValue);    } }  //recursively calls PrintFactorial method to compute the factorial

int main() {  //start of main function

  int userVal = 0;   //initialize the userVal variable to 0

  userVal = 5;  //assigns 5 to the userVal variable

  cout << userVal << "! = ";  //prints the userVal with ! =

  PrintFactorial(userVal, userVal); } //calls PrintFactorial method to compute the factorial of userVal i.e. 5

Explanation:

I will explain the logic of the program with an example.

The value of variable userVal is 5  

This is passed to the method PrintFactorial()

1st step:

void PrintFactorial(int factCounter, int factValue) becomes:  

PrintFactorial(5, 5)

PrintFactorial method has two base conditions which do not hold because the factCounter is 5 here which is neither 1 nor 0 so the program control moves to the recursive part.  

cout << factCounter << " * ";

In recursive part, the above statement prints the value of factCounter  followed by an asterisk on the output screen. So this prints:

5 *

nextCounter = factCounter - 1;

This statement decrements the value of factCounter by 1 and assigns it to nextCounter as:

nextCounter = 5 - 1;

nextCounter = 4

nextValue = nextCounter * factValue;  multiplies the value of nextCounter by factValue and stores result in nextValue . So

nextValue = 4 * 5  

nextValue = 20

PrintFactorial( nextCounter,  nextValue);  this statement calls the PrintFactorial() recursively to perform the above steps again until the base condition is reached. This statement becomes:  

PrintFactorial(4,20)

2nd step:

PrintFactorial method has two base conditions which do not hold because the factCounter is 4 here which is neither 1 nor 0 so the program control moves to the recursive part.  

cout << factCounter << " * ";

In recursive part, the above statement prints the value of factCounter  followed by an asterisk on the output screen. So this prints:

5* 4 *

nextCounter = factCounter - 1;

This statement decrements the value of factCounter by 1 and assigns it to nextCounter as:

nextCounter = 4 - 1;

nextCounter = 3

nextValue = nextCounter * factValue;  multiplies the value of nextCounter by factValue and stores result in nextValue . So

nextValue = 3 * 20

nextValue = 60

PrintFactorial( nextCounter,  nextValue);   This statement becomes:  

PrintFactorial(3,60)

3rd step:

PrintFactorial method has two base conditions which do not hold because the factCounter is 3 here which is neither 1 nor 0 so the program control moves to the recursive part.  

cout << factCounter << " * ";

In recursive part, the above statement prints the value of factCounter  followed by an asterisk on the output screen. So this prints:

5* 4 * 3 *

nextCounter = factCounter - 1;

This statement decrements the value of factCounter by 1 and assigns it to nextCounter as:

nextCounter = 3 - 1;

nextCounter = 2

nextValue = nextCounter * factValue;  multiplies the value of nextCounter by factValue and stores result in nextValue . So

nextValue = 2 * 60

nextValue = 120

PrintFactorial( nextCounter,  nextValue);  This statement becomes:  

PrintFactorial(2,120)

4th step:

PrintFactorial method has two base conditions which do not hold because the factCounter is 2 here which is neither 1 nor 0 so the program control moves to the recursive part.  

cout << factCounter << " * ";

In recursive part, the above statement prints the value of factCounter  followed by an asterisk on the output screen. So this prints:

5* 4 * 3 * 2 *

nextCounter = factCounter - 1;

This statement decrements the value of factCounter by 1 and assigns it to nextCounter as:

nextCounter = 2 - 1;

nextCounter = 1

nextValue = nextCounter * factValue;  multiplies the value of nextCounter by factValue and stores result in nextValue . So

nextValue = 1 * 120

nextValue = 120

PrintFactorial( nextCounter,  nextValue);  This statement becomes:  

PrintFactorial(1,120)

Now the base case 2 evaluates to true because nextCounter is 1

cout << factCounter << " = " << factValue  statement prints the value of factCounter i.e. 1 followed by an equal sign = followed by value of factValue i..e 120

So the output of the above program with userVal = 5 is:  

5! = 5 * 4 * 3 * 2 * 1 = 120

You might be interested in
What year did Forethought, Inc. release version 1.0 of PowerPoint
vovangra [49]

Answer:

1987 #givemebrainliest Please .-.

Explanation:

8 0
3 years ago
Two friends are eating dinner at a restaurant. The bill comes in the amount of 47.28 dollars. The friends decide to split the bi
Daniel [21]

Answer:

bill = 47.28

tip = bill * 0.15

total_pay = bill + tip

each_share = total_pay / 2

print("Each person needs to pay: " + str(each_share))

Explanation:

*The code is in Python.

Set the bill

Calculate the tip, multiply the bill by 0.15

Calculate the total_pay, add bill and tip

Calculate each friend's share, divide the total_pay by 2. Then, print it in required format.

4 0
3 years ago
Hi Guys,
Bingel [31]

Answer:

Please check the attachment.

Explanation:

Please check the attachment.

Download docx
8 0
4 years ago
What happens when two computers use the same IP address?
OLga [1]

Two computers can safely have the same IP address in certain cases. In most cases, if those two computers are on the same local network, it breaks connectivity for one or both of them. Internet protocols work by sending small, individually addressed messages. Each message can be routed differently.

I hope this helps you.

6 0
3 years ago
A student should always read the directions to a test or question so they know what is expected of them when answering the quest
Kay [80]

I don't know why you needed to ask this but the answer is True

7 0
3 years ago
Read 2 more answers
Other questions:
  • How to analyze time complexity of a code?
    5·1 answer
  • Which type of media would be best for showing global trade routes?
    7·2 answers
  • The atomic number of oxygen is 8. the atomic mass of oxygen is 16. him many neutrons does oxygen have
    12·1 answer
  • What is ‘Black-Box’ testing?
    14·1 answer
  • How do i end my current plan that i never signed up for, the basic one it charged me $24
    11·2 answers
  • List the various types of social media that have been covered in the tutorial. Mention the key purposes for which each media typ
    9·1 answer
  • Hosts A and B are 20 000 km away from each other. The propagation speed of the link between them is 25000 mps. The data is place
    9·1 answer
  • Creating Classes
    12·1 answer
  • Can I get the code for the Edhesive Assignment 3 Chatbox in python? Thanks.
    15·1 answer
  • Which statement best describes 'abstraction'? *
    5·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!