gpt4 book ai didi

java - 如何在达到 Java 中的指定目标时停止对调和级数求和?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:03:15 25 4
gpt4 key购买 nike

我是 Java 的初学者,最近才接触到循环。我正在尝试编写一个程序,该程序读取目标并找到第一个 n 使得 1 + 1/2 + 1/3 + ... + 1/n > 目标。该问题提供的代码缺少 n 和 sum 的初始化以及 while 的条件及其语句。

我能够弄清楚如何制作谐波级数循环,但我不确定如何设置 n 以在它超过目标时停止循环。我们还没有在类里面学习数组。 .

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 = ???? ;

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

//Notes
// 1 + 1/2 + 1/3 + 1/4 + ..... 1/n
//Make a loop that repeats itself starting with n = 1 --> 1/1 + 1/2 + 1/3 + 1/4 + 1/n

// 1.0/n + (1.0/ n - 1) + (1.0/n-2) +.... if n =4 --> 1/4 + 1/3 + 1/2 + 1/1 as long as n >0


while ( n > 0)
{
sum += 1.0/n ;
n--;
}

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

最佳答案

n 应该在循环中递增(因此它应该从 0 开始),并且当您到达目标时应该退出循环:

int n = 0;

...

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

关于java - 如何在达到 Java 中的指定目标时停止对调和级数求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45125618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com