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]
3 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]3 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
A(n) _____ chart is drawn on the same worksheet as the data.
Harrizon [31]
The answer is An embedded chart
6 0
4 years ago
Perform algorithm time measurement for all three quadratic sorting algorithms for Best Case (already sorted), Average Case (rand
Kaylis [27]

Answer:

Experiment size : 50,000

==================================

Selection sort :

---------------------------------------------------------

Worst case : 0.162

Average case : 0.116

Best case : 0.080

Insertion sort :

---------------------------------------------------------

Worst case : 0.162

Average case : 0.116

Best case : 0.080

Bubble sort:

--------------------------------------------------------

Worst case : 0.211

Average case : 0.154

Best case : 0.117

Experiment size : 100,000

==================================

Selection sort :

---------------------------------------------------------

Worst case : 0.316

Average case : 0.317

Best case : 0.316

Insertion sort :

---------------------------------------------------------

Worst case : 0.316

Average case : 0.317

Best case : 0.316

Bubble sort:

--------------------------------------------------------

Worst case : 0.482

Average case: 0.487

Best case : 0.480.

Experiment size : 200,000

==================================

Selection sort :

---------------------------------------------------------

Worst case : 1.254

Average case : 1.246

Best case : 1.259

Insertion sort :

---------------------------------------------------------

Worst case : 1.254

Average case : 1.246

Best case : 1.259

Bubble sort:

--------------------------------------------------------

Worst case : 1.990

Average case : 2.009.

Best case : 1.950

Explanation:

[NB: since it is very long there is the need for me to put it it a document form. Kindly check the doc. Files. The file A is the sort Analysis.Java file and the file B is the sort.Java file].

The concept of algorithm time measurement strictly depends on the following;

=> The measurement of time, space or energy on different sizes.

=> Plotting of the measurements and characterizing them.

=> Running or implementation of the algorithm.

Programming language such as Java can be used in accessing the operating system clock and Java had two static methods.

KINDLY CHECK BELOW FOR THE ATTACHMENT.

Download doc
<span class="sg-text sg-text--link sg-text--bold sg-text--link-disabled sg-text--blue-dark"> doc </span>
<span class="sg-text sg-text--link sg-text--bold sg-text--link-disabled sg-text--blue-dark"> doc </span>
5 0
3 years ago
The four levels of FBLA membership
Nataly_w [17]

Answer:

Future Business Leaders of America (FBLA) for high school students; FBLA-Middle Level for junior high, middle, and intermediate school students; Phi Beta Lambda (PBL) for post secondary students; and Professional Division for those not enrolled in school or post secondary school

Explanation:

7 0
3 years ago
Who wants to join my team that goes against bullying?
weeeeeb [17]
I would be glad to. :D
6 0
3 years ago
Identify a syntax used to create a spinner control using an input element. a. b. c. d.
Lorico [155]

Answer:

Option A:

<input name="name" id="id" type="number" value="value" step="value" min="value" max="value" />

Explanation:

Spinner control is a graphical control element where user can adjust the value by pressing up or down arrow button. An example is given in the attached image.

In HTML, one of the key attributes we must use to create a spinner control is "step". The attribute "step" is required to specify the interval of the step value when user press the up or down arrow button.

If we set the attribute values as follows:

  • type = "number"
  • value = 2
  • min = 0
  • max = 10

The setting above will give a spinner control with a range of legal numbers between 0, 2, 4, 6, 8 and 10.

6 0
3 years ago
Other questions:
  • Can some one please help The term career is usually applied to a what PLEASEEEEEEEEEEEE HEEEEELLLLLPPPPP MEEEEEE
    7·1 answer
  • If you find yourself boxed in by a vehicle on your left or right _____________
    14·2 answers
  • What is batch processing?
    12·1 answer
  • A media strategy that involves high ________ most likely involve creating broad exposure using many media vehicles, while a stra
    15·1 answer
  • A photographer uses which of these tools to form an argument?
    14·2 answers
  • First time using this site so be mindful if I make any mistakes
    6·1 answer
  • This is a tableware use to serve the main dish
    11·1 answer
  • Explain the different features available in Print command?
    10·1 answer
  • IPv4 and IPv6 are addresses used to identify computers on the Internet. Is this whether true or not:
    5·1 answer
  • There is overlap in the subjects of study in the different information technology disciplines.
    5·2 answers
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!