gpt4 book ai didi

java - 循环中分数的加法

转载 作者:行者123 更新时间:2023-12-01 11:00:04 26 4
gpt4 key购买 nike

我被分配了一项作业,其中我必须创建一个程序来添加以下数字,然后在使用循环语句时告诉用户答案。

(1/3 + 3/5 + 5/7 + 7/9 + 9/11 + 11/13 + ... 95/97 + 97/99)根据教授的说法,答案应该是 45.12445,但我收到的答案是 40.92541,而且我很难弄清楚我的逻辑错误在哪里。

public class HW6
public static void main(String[]args)
{
//Declarations
double num;
double denom;
double holder1;
double sum;
num=1;
denom = 3;
sum=0;


// Perform loop
for (num=1;num<=98;num=num+2) {
num = num+2;
denom = denom+2;
holder1 = num/denom;
sum= sum+holder1;
}

// Print sum
System.out.println("The sum is " +sum);
}
}

最佳答案

要理解逻辑中的问题,请一次一步地进行。循环之前的初始化看起来不错,所以让我们从循环的开头开始:

迭代 1

for (num=1;num<=98;num=num+2) {

此时,您的变量包含以下内容:

num == 1,decom == 3,sum == 0,holder == undefined(因为你没有初始化它)

在以下语句之后:

num = num+2;

num 更改为 3,因此我们现在有:

num == 3, denom == 3, sum == 0,holder == 未定义。

下一条语句之后:

denom = denom+2;

decom 从 3 变为 5,因此我们有:

num == 3, denom == 5, sum == 0,holder == 未定义。

然后,之后

holder1 = num/denom;

我们得到了第一个计算出的分数,它(因为 num==3 且 denom==5)是 3/5,即 0.6。您可能会注意到这不是您想要的,因为根据您的分配,级数中的第一个分数应该是 1/3。因此,您的逻辑的第一个问题是,在计算级数中的第一个分数之前,您要将 num 和 denom 都加 2。

之后继续单步执行代码
sum= sum+holder1;

变量包含

num == 3,面额 == 5,总和 == 0.6,持有者 == 0.6。


迭代 2

现在,在返回执行 for 循环的下一次迭代之前,num 变量将增加 2,如 中的第三个表达式所指定>for 循环定义:num=num+2。因此,当第二次迭代的循环开始时,变量包含:

num == 5,面额 == 5,总和 == 0.6,持有者 == 0.6。

与之前一样,接下来的两个语句将 numdenom 分别增加 2,因此在计算下一个分数之前,变量包含:

数字 == 7,面额 == 7,总和 == 0.6,持有者 == 0.6。

然后将变量 holder 计算为 num/denom = 7/7 = 1.0(这当然不是正确系列的一部分的分数),然后将其添加到 sum 中,您就得到了

num == 7,面额 == 7,总和 == 1.6,持有者 == 1.0。


结论

所以你的逻辑至少有两个错误。第一个是,在分别将 numdenom 初始化为 1 和 3 后,在计算它们的比率之前分别添加 2。您可能应该做的是在计算出numdenom比率之后分别为它们添加2,但是在跳回到循环开始之前。

您希望在我们单步执行代码时注意到第二个错误,即每次循环时都会将 2 添加到 num 两次:一次根据您的 for 说明符,在循环底部,并在循环顶部一次。您只需要递增 2 操作之一。

因此,改进的循环如下所示:

        for (num=1;num<=98;num=num+2) {
holder1 = num/denom;
sum= sum+holder1;
denom = denom+2;
}

关于java - 循环中分数的加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417771/

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