gpt4 book ai didi

java - 系列代

转载 作者:行者123 更新时间:2023-11-29 05:10:23 25 4
gpt4 key购买 nike

我正在尝试找出系列的总和,1/2! - 2/3! + 3/4! - 4/5! ... 名词。抱歉,这听起来很尴尬,但总和始终显示为 0.0。我不知道发生了什么,我才刚刚开始。任何人都可以指出错误并建议如何解决吗?谢谢!

import java.util.Scanner;
public class Series {
/*
* Series design: 1/2! - 2/3! + 3/4! - 4/5! .. n
*/
static double sum = 0; static int n;
Scanner sc = new Scanner(System.in);
public static int fact(int n){
int fact = 1;
for (int i = 1; i<=n; i++){
fact *= i;
}
return fact;
}
void generate(){
double sign = 1.0; double term;
for (int i = 1; i<=n; i++){
term = i/fact(i+1) * sign;
sum += term;
sign *= -1;
}
}
void accept(){
System.out.println("Enter the value of n:");
n = sc.nextInt();
}
public static void main(String[] args){
Series o = new Series();
o.accept();
o.generate();
System.out.println("The sum of the series is: " +sum);
}
}

最佳答案

ifact(i+1)都是int s,所以你正在表演 integer division .自 i < fact(i+1) ,每个这样的术语都会产生一个零。

您对 sign 的定义是正确的作为double , 但自 /*具有相同的优先级,您首先执行整数除法,然后才乘以双 sign .将它移到表达式的开头应该可以解决问题:

void generate(){
double sign = 1.0; double term;
for (int i = 1; i<=n; i++){
term = (sign * i) / fact(i+1);
sum += term;
sign *= -1;
}
}

关于java - 系列代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28791111/

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