The sum of the reciprocals 1 + 1/2 + 1/3 + 1/4 + … is infinite. I’m supposed to write a program that reads in a target and finds the first n such that 1 + 1/2 + 1/3 + … + 1/n > target, but I can’t figure out how to do it. This is where I’m currently at, and the following code just results in an infinite loop. Any help will be greatly appreciated.

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
The sum of the reciprocals 1 + 1/2 + 1/3 + 1/4 + … is infinite. I’m supposed to write a program that reads in a target and finds the first n such that 1 + 1/2 + 1/3 + … + 1/n > target, but I can’t figure out how to do it. This is where I’m currently at, and the following code just results in an infinite loop. Any help will be greatly appreciated.
```java
import java.util.Scanner;

/**
 * This program computes how many steps the sum 1 + 1/2 + 1/3 + ...
 * needs to exceed a given target.
 */
public class ReciprocalSum {

    public static void main(String[] args) {
        
        double sum = 0;
        int n = 0;

        Scanner in = new Scanner(System.in);
        System.out.print("Target: ");
        double target = in.nextDouble();

        while (sum < target) {
            n++;
            sum += (1.0 / n);
        }

        System.out.println("n: " + n);
        System.out.println("sum: " + sum);
    }
}
```

**Program Description:**

This Java program calculates how many terms (steps) of the harmonic series \(1 + \frac{1}{2} + \frac{1}{3} + \ldots\) are required until the cumulative sum exceeds a given target value. It uses a `Scanner` to get user input for the target, then iteratively adds the reciprocal of consecutive integers to the sum until this sum surpasses the target.

**Code Explanation:**

1. **Imports:**
   - `import java.util.Scanner;`: Imports the `Scanner` class for taking user input.

2. **Class and Method:**
   - `public class ReciprocalSum`: Defines the main class `ReciprocalSum`.
   - `public static void main(String[] args)`: The main method that executes the program.

3. **Variables:**
   - `double sum = 0;`: Initializes `sum` as a double to accumulate the series.
   - `int n = 0;`: Initializes `n` to track the number of terms in the series.

4. **Scanner:**
   - Receives the target value from the user.

5. **While Loop:**
   - Checks if the current sum is less than the target.
   - Increments `n` and adds \( \frac{1}{n} \) to the sum.

6. **Output:**
   - Prints the total number of terms (`n`) and the final sum when the loop exits.
```
Transcribed Image Text:```java import java.util.Scanner; /** * This program computes how many steps the sum 1 + 1/2 + 1/3 + ... * needs to exceed a given target. */ public class ReciprocalSum { public static void main(String[] args) { double sum = 0; int n = 0; Scanner in = new Scanner(System.in); System.out.print("Target: "); double target = in.nextDouble(); while (sum < target) { n++; sum += (1.0 / n); } System.out.println("n: " + n); System.out.println("sum: " + sum); } } ``` **Program Description:** This Java program calculates how many terms (steps) of the harmonic series \(1 + \frac{1}{2} + \frac{1}{3} + \ldots\) are required until the cumulative sum exceeds a given target value. It uses a `Scanner` to get user input for the target, then iteratively adds the reciprocal of consecutive integers to the sum until this sum surpasses the target. **Code Explanation:** 1. **Imports:** - `import java.util.Scanner;`: Imports the `Scanner` class for taking user input. 2. **Class and Method:** - `public class ReciprocalSum`: Defines the main class `ReciprocalSum`. - `public static void main(String[] args)`: The main method that executes the program. 3. **Variables:** - `double sum = 0;`: Initializes `sum` as a double to accumulate the series. - `int n = 0;`: Initializes `n` to track the number of terms in the series. 4. **Scanner:** - Receives the target value from the user. 5. **While Loop:** - Checks if the current sum is less than the target. - Increments `n` and adds \( \frac{1}{n} \) to the sum. 6. **Output:** - Prints the total number of terms (`n`) and the final sum when the loop exits. ```
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 5 images

Blurred answer
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