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
Write a lottery program that will ask the user if they would like to pick 5 numbers (1-30) or if they would like to choose EZ Pi
Llana [10]

Answer:

Explanation:

The following code is written in Python and creates arrays for the user's numbers and the next chance numbers, it also creates a cost variable and a did_you_win variable. The function takes in the winning numbers as an array parameter. It asks all the necessary questions to generate data for all the variables and then compares the user's numbers to the winning numbers in order to detect if the user has won. Finally, it prints all the necessary information.

import random

def lottery(winning_numbers):

   user_numbers = []

   next_chance_drawing = []

   cost = 0

   did_you_win = "No"

   #print("Would you like to choose your own 5 numbers? Y or N")

   answer = input("Would you like to choose your own 5 numbers? Y or N: ")

   if answer.capitalize() == "Y":

       for x in range(5):

           user_numbers.append(input("Enter number " + str(x+1) + ": "))

   else:

       for x in range(5):

           user_numbers.append(random.randint(0,31))

           cost += 1

   next_chance = input("Would you like to enter a Next Chance drawing for $1.00? Y or N: ")

   if next_chance.capitalize() == "Y":

       for x in range(4):

           next_chance_drawing.append(random.randint(0, 31))

           cost += 1

           

   if user_numbers == winning_numbers or next_chance_drawing == winning_numbers:

       did_you_win = "Yes"

   print("User Numbers: " + str(user_numbers))

   print("Next Chance Numbers: " + str(next_chance_drawing))

   print("Cost: $" + str(cost))

   print("Did you win: " + did_you_win)

6 0
3 years ago
To specify your preferred colors, fonts, and effects for a document, which of the following should be done?
Irina-Kira [14]

Answer: crest custom theme

Explanation:

8 0
3 years ago
Read 2 more answers
Which of the following was the first full-length film to be done completely in 3-D imaging
motikmotik
Toy story I believe is the answer
6 0
3 years ago
Read 2 more answers
What is the process called that occurs when you start up your computer? A Download B Restore C Boot D Copy
inn [45]
Starting up your computer can also be referred to as "booting up" therefore, the answer is c
8 0
3 years ago
Read 2 more answers
Search engines enable you to:A. talk to people via the computer.B. locate Web pages related to a specific subject.C. connect to
GalinKa [24]
The correct answer is B. locate Web pages related to a specific subject.

An example of a search engine is Google: it helps you find Websites with the content you're looking for.
3 0
3 years ago
Other questions:
  • To create an individual version of a slide, you would click
    9·1 answer
  • ICT excel data homework
    10·1 answer
  • A database interrogation is a major benefit of the database management approach, where end users can query (“ask”) the database
    6·1 answer
  • A _______ is conducted to determine the adequacy of system controls, ensure compliance with established security policy and proc
    10·1 answer
  • Modify the sentence-generator program of Case Study so that it inputs its vocabulary from a set of text files at startup. The fi
    15·1 answer
  • What is a spreadsheet program?<br> A spreadsheet program is a computerized version of _______
    5·1 answer
  • Questions Presscomion
    9·1 answer
  • Is this even possible
    9·2 answers
  • write a program that asks the user for a month number and displays the number of days that month has?
    7·2 answers
  • Instructions
    8·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!