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
Dimas [21]
3 years ago
8

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:
garik1379 [7]3 years ago
6 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
The computer virus is simply a.......... a. diseases b.set of computer instrustruction or code c. types of bacteria​
Svetllana [295]

Answer: b

The computer virus is simply a ___

b. Set of computer instructions or code

4 0
3 years ago
Choose 2 statements that correctly describe the time complexity of data structures with N data.
Softa [21]

The  statements that correctly describe the time complexity of data structures with N data are:

  • The average time complexity of the data lookup in a hash table is O(N).
  • The average time complexity of inserting data into a heap is O(logN)

<h3>What is time complexity of data structures?</h3>

Time Complexity of an algorithm is known to be the depiction of the amount of time needed by the algorithm to carry out to completion.

Note that The  statements that correctly describe the time complexity of data structures with N data are:

  • The average time complexity of the data lookup in a hash table is O(N).
  • The average time complexity of inserting data into a heap is O(logN)

Learn more about data from

brainly.com/question/17350816

#SPJ1

6 0
2 years ago
Think about a career you would like to have 10 years from now.
WITCHER [35]

Answer: Scientist

Explanation: Scientists use technology to record data, as well as using technology to study different things, for example scientists use computers to track DNA.

6 0
3 years ago
Dynamic programming does not work if the subproblems: ___________
nirvana33 [79]

Answer:

A. Share resources and thus are not independent

Explanation:

This would be the answer. If this is wrong plz let me know

6 0
3 years ago
•What are some conflicts between humans and machines that have arisen in the past?
slamgirl [31]
I think that people have lost their jobs because of an increase of computers. Also, a<span>utomobiles can crash and injure and kill people. </span><span>Ships can be sunk. </span><span>Poorly constructed or maintained machinery can harm the workers. </span><span>The telegraph put the pony express out of business. </span><span>Many factories pollute the water and air. </span>
7 0
3 years ago
Other questions:
  • "To take advantage of these developments in the digital world, new approaches, concepts,instruments, and methods are needed, whi
    8·1 answer
  • Which guidelines should be used to make formatting tasks more efficient?
    15·2 answers
  • PLEASE HELP!<br> How do you "brainliest" an answer?
    13·2 answers
  • Write smallest to largest: Byte, bit, MB, PB, GB, nibble
    12·2 answers
  • Write a program that asks the user to enter the size of a triangle (an integer from 1 to 50). Display the triangle by writing li
    14·1 answer
  • Why is manual coding the best way to learn HTML?
    11·1 answer
  • Since the rules cannot address all circumstances, the Code includes a conceptual framework approach for members to use to evalua
    8·1 answer
  • What are your thoughts on copyright?<br><br> (Write 2 or more sentences)
    9·2 answers
  • Higher Order Functions used for simulations of dice rolls. Definition: An n-sided dice function takes no arguments and always re
    12·1 answer
  • How to check the at&amp;t internet speed on my computer
    9·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!