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
vivado [14]
4 years ago
6

Write code to complete factorial_str()'s recursive case. Sample output with input: 5 5! = 5 * 4 * 3 * 2 * 1 = 120

Computers and Technology
1 answer:
tamaranim1 [39]4 years ago
8 0

Answer:

Here is the complete code to complete factorial_str()'s recursive case:

Just add this line to the recursive part of the code for the solution:

output_string += factorial_str(next_counter,next_value)  

The above statement calls factorial_str() method recursively by passing the values of next_counter and next_value. This statement continues to execute and calls the factorial_str() recursively until the base case is reached.

Explanation:

Here is the complete code:

def factorial_str(fact_counter, fact_value):  #method to find the factorial

   output_string = ''   #to store the output (factorial of an input number)

   if fact_counter == 0:  # base case 1 i.e. 0! = 1

       output_string += '1'  # displays 1 in the output

   elif fact_counter == 1:  #base case 2 i.e. 1! = 1

       output_string += str(fact_counter) + ' = ' + str(fact_value)  #output is 1

   else:  #recursive case

       output_string += str(fact_counter) + ' * '  #adds 8 between each value of fact_counter

       next_counter = fact_counter - 1  #decrement value of fact_counter by 1

       next_value = next_counter * fact_value  #multiplies each value of fact_value by next_counter value to compute the factorial

       output_string += factorial_str(next_counter,next_value) #recursive call to factorial_str to compute the factorial of a number

   return output_string   #returns factorial  

user_val = int(input())  #takes input number from user

print('{}! = '.format(user_val),end="")  #prints factorial in specified format

print(factorial_str(user_val,user_val))  #calls method by passing user_val to compute the factorial of user_val

I will explain the program logic with the help of an example:

Lets say user_val = 5

This is passed to the method factorial_str()

factorial_str(fact_counter, fact_value) becomes:

factorial_str(5, 5):  

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

output_string += str(fact_counter) + ' * '  adds an asterisk after the value of fact_counter i.e. 5 as:

5 *

next_counter = fact_counter - 1 statement decrements the value of fact_counter  by 1 and stores that value in next_counter. So

next_counter = 5 - 1

next_counter = 4

next_value = next_counter * fact_value  multiplies the value of next_counter by fact_value and stores result in next_value. So

next_value = 4 * 5

next_value = 20

output_string += factorial_str(next_counter,next_value)  this statement calls the factorial_str() to perform the above steps again until the base condition is reached. This statement becomes:

output_string = output_string + factorial_str(next_counter,next_value)

output_string = 5 * 4 = 20

output_string = 20

Now factorial_str(next_counter,next_value) becomes:

factorial_str(4,20)

output_string += str(fact_counter) + ' * ' becomes

5 * 4 * 3

next_counter = fact_counter - 1  becomes:

4 - 1 = 3

next_counter = 3

next_value = next_counter * fact_value  becomes:

3 * 20 = 60

next_value = 60

output_string = 5 * 4 * 3= 60

output_string = 60

factorial_str(next_counter,next_value) becomes:

factorial_str(3,60)

output_string += str(fact_counter) + ' * ' becomes

5 * 4 * 3 * 2

next_counter = fact_counter - 1  becomes:

3 - 1 = 2

next_counter = 2

next_value = next_counter * fact_value  becomes:

2 * 60 = 120

next_value = 120

output_string += factorial_str(next_counter,next_value) becomes:

output_string = 120 + factorial_str(next_counter,next_value)

output_string = 5 * 4 * 3 * 2 = 120

factorial_str(2,120)

output_string += str(fact_counter) + ' * ' becomes

5 * 4 * 3 * 2 * 1

next_counter = fact_counter - 1  becomes:

2 - 1 = 1

next_counter = 1

next_value = next_counter * fact_value  becomes:

1 * 120 = 120

next_value = 120

output_string += factorial_str(next_counter,next_value) becomes:

output_string = 120 + factorial_str(next_counter,next_value)

factorial_str(next_counter,next_value) becomes:

factorial_str(1, 120)

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

elif fact_counter == 1

So the elif part executes which has the following statement:

output_string += str(fact_counter) + ' = ' + str(fact_value)  

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

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

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

You might be interested in
What should you consider when thinking about your target audience?
inysia [295]
Hi,


The answer is all of the above. Its best to know your audience as best as you can that way you are able to think about it better.

Hope this helps.
r3t40
6 0
4 years ago
Choose the web design factor from the drop-down menus that best represents each statement. A. Good web pages stick to the point,
Paladinen [302]

Choose the web design factor from the drop-down menus that best represents each statement.

Answer:

A. Good web pages stick to the point, do not have useless information, and showcase important information.

  • Useful content

B. The best websites clearly present a reason for the creation of the site.

  • Purpose

C. The best websites are pleasing to look at and make you want to click further through the pages.

  • Visually appealing

D. It is important for the web designer to understand the needs, interests, and technology level of the target web page visitor.

  • Audience

E. Good websites make it easy to navigate from one page to the other with relevant links in obvious places.

  • Easy to use
4 0
4 years ago
Which line of code will use the overloaded division operation?
DerKrebs [107]

Answer:

B. result = numA/numB

Explanation:

__truediv__ overloads the / operator in Python. Since that has been defined in the class "num" and numA and numB are both objects of type "num" (numA / numB) will call num.__truediv__ using numA as "self" and numB as "b".

7 0
3 years ago
Which protocol is often used to publish web pages to a web server?
zmey [24]
 File Transfer Protocol, also known as FTP
5 0
3 years ago
I just need the flowchart and pseudocode.No need program.
nevsk [136]

The pseudocode algorithm for the given program is:

  1. PROCESS saving account transactions
  2. REQUEST for previous account balance
  3. FOR every deposit made, (+)
  4. FOR every withdrawal made (-)

<h3>What is a Pseudocode?</h3>

This refers to the use of plain language to describe the sequence of steps for solving a problem in human language.

Hence, we can see that the complete step is given below:

5. DISPLAY "Withdrawal" when (-) is used.

6. DISPLAY "Deposit" when (+) is used

7. ELSE

8. PRINT "Error"

#SPJ1

Read more about flowcharts and pseudocodes here:

brainly.com/question/24735155

3 0
2 years ago
Other questions:
  • Assure that major, minor, sub1 and sub2 each contain four digit numbersIf less than four digits are entered in major OR minor OR
    5·1 answer
  • Kash has created a document that needs to be protected. only certain users should be able to open the document. what option shou
    5·1 answer
  • When you search google for​ dishwashers, you are likely to see a number of inconspicuous ads for​ advertisers, including product
    11·1 answer
  • Java Question-5 Declare and initialize two variables called first and second. Write a single statement that will print the messa
    15·1 answer
  • Which term describes the order of arrangement of files and folders on a computer
    11·1 answer
  • Two Smallest (20 points). Write a program TwoSmallest.java that takes a set of double command-line arguments and prints the smal
    7·1 answer
  • What is the Keyboard shortcut to change the case of selected text?
    6·1 answer
  • Data are sent through a network on bundles called _______. select one:
    8·2 answers
  • In your own words, describe invention.
    8·2 answers
  • What does playstation network is currently undergoing maintenance?.
    15·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!