1. public long nthFactorial (int n). This method should call computeFactorialRecurse(n). 2. private long computeFactorialRecurse (int n), which should recurse (that is, call itself) unless n is 0 (if n is 0, the method should return 1). 3. Amain method that constructs a FactorialGenerator instance and calls nthFactorial (), passing in interesting values. So far the class should be very simple. Try computing x! for x = 6, 10, and 20. Now put a loop in main() that prints x!, where x goes from 1 to 32. For what values of x does x! look wrong? Describe how they look wrong. Jot down an example of one of the wrong numbers on some scratch paper. To find out why, explore the optional exercises on the next page. Now change main() so that it calls nthFactorial(-1). What happened?

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

In Java, how would I implement recursion with the two said functions based on these instructions?

1. public long nthFactorial (int n). This method should call
computeFactorial Recurse(n).
2. private long computeFactorial Recurse (int n), which should recurse
(that is, call itself) unless n is 0 (if n is 0, the method should return 1).
3. A main method that constructs a FactorialGenerator instance and calls
nthFactorial (), passing in interesting values.
So far the class should be very simple. Try computing x! for x = 6, 10, and 20.
Now put a loop in main() that prints x!, where x goes from 1 to 32. For what values of x
does x! look wrong? Describe how they look wrong. Jot down an example of one of the
wrong numbers on some scratch paper.
To find out why, explore the optional exercises on the next page.
Now change main() so that it calls nthFactorial (-1). What happened?
Your computeFactorial Recurse() method needs a precondition check. Before it does
anything else, it should make sure n is >= 0. If n is negative, you can either throw
IllegalArgumentException or use assertions. Let's use an assertion here. Write an assertion
that asserts n>=0. If it isn't, write a meaningful message. (HINT: remember assert boolean :
object. The assertion error is thrown if the boolean value is false. In this case, we want to
pass a String object with a message).
Run the app again. What happened? If the assertion didn't have any effect, you probably
don't have assertions enabled. To enable assertions, select "Run Configurations..." in the
Run menu. In the wizard that pops up, select the "Arguments" tab. In the lower text area
("VM Arguments", not "Program Arguments") type-ea and then click "Apply". Run the app
again. You should now see the result of triggering the assertion statement.
Transcribed Image Text:1. public long nthFactorial (int n). This method should call computeFactorial Recurse(n). 2. private long computeFactorial Recurse (int n), which should recurse (that is, call itself) unless n is 0 (if n is 0, the method should return 1). 3. A main method that constructs a FactorialGenerator instance and calls nthFactorial (), passing in interesting values. So far the class should be very simple. Try computing x! for x = 6, 10, and 20. Now put a loop in main() that prints x!, where x goes from 1 to 32. For what values of x does x! look wrong? Describe how they look wrong. Jot down an example of one of the wrong numbers on some scratch paper. To find out why, explore the optional exercises on the next page. Now change main() so that it calls nthFactorial (-1). What happened? Your computeFactorial Recurse() method needs a precondition check. Before it does anything else, it should make sure n is >= 0. If n is negative, you can either throw IllegalArgumentException or use assertions. Let's use an assertion here. Write an assertion that asserts n>=0. If it isn't, write a meaningful message. (HINT: remember assert boolean : object. The assertion error is thrown if the boolean value is false. In this case, we want to pass a String object with a message). Run the app again. What happened? If the assertion didn't have any effect, you probably don't have assertions enabled. To enable assertions, select "Run Configurations..." in the Run menu. In the wizard that pops up, select the "Arguments" tab. In the lower text area ("VM Arguments", not "Program Arguments") type-ea and then click "Apply". Run the app again. You should now see the result of triggering the assertion statement.
Expert Solution
steps

Step by step

Solved in 2 steps with 6 images

Blurred answer
Knowledge Booster
Adjacency Matrix
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education