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?

This text discusses the implementation of a recursive method to compute factorials in Java. Here's a breakdown:

1. **Method Setup:**
   - `public long nthFactorial(int n)`: This method will call `computeFactorialRecurse(n)`.
   - `private long computeFactorialRecurse(int n)`: This method should recursively call itself unless `n` is 0, in which case it returns 1.
   - A `main` method constructs a `FactorialGenerator` instance and calls `nthFactorial()`, passing various values for exploration.

2. **Exercise:**
   - Insert a loop in `main()` to print `x!` as `x` ranges from 1 to 32. Investigate abnormalities in the results, document discrepancies, and speculate on their causes.

3. **Further Exploration:**
   - Modify `main()` to invoke `nthFactorial(-1)`. Analyze and record observations.

4. **Precondition Check:**
   - The `computeFactorialRecurse()` method must ensure that `n` is greater than or equal to 0. Implement this using assertions:
     - If `n` is negative, assert `n >= 0` and provide a descriptive message if the assertion fails. 

5. **Running with Assertions:**
   - Ensure assertions are enabled in the runtime configuration by setting the VM argument `-ea`. This is critical for validating the efficacy of the assertion.

The text serves as an instructional guide on implementing and testing recursion and assertions in Java for factorial calculations.
Transcribed Image Text:This text discusses the implementation of a recursive method to compute factorials in Java. Here's a breakdown: 1. **Method Setup:** - `public long nthFactorial(int n)`: This method will call `computeFactorialRecurse(n)`. - `private long computeFactorialRecurse(int n)`: This method should recursively call itself unless `n` is 0, in which case it returns 1. - A `main` method constructs a `FactorialGenerator` instance and calls `nthFactorial()`, passing various values for exploration. 2. **Exercise:** - Insert a loop in `main()` to print `x!` as `x` ranges from 1 to 32. Investigate abnormalities in the results, document discrepancies, and speculate on their causes. 3. **Further Exploration:** - Modify `main()` to invoke `nthFactorial(-1)`. Analyze and record observations. 4. **Precondition Check:** - The `computeFactorialRecurse()` method must ensure that `n` is greater than or equal to 0. Implement this using assertions: - If `n` is negative, assert `n >= 0` and provide a descriptive message if the assertion fails. 5. **Running with Assertions:** - Ensure assertions are enabled in the runtime configuration by setting the VM argument `-ea`. This is critical for validating the efficacy of the assertion. The text serves as an instructional guide on implementing and testing recursion and assertions in Java for factorial calculations.
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
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