我正在尝试编写一个接受用户整数的程序,然后它应该计算这个系列 S = 1/2! - 1/3! + 1/4! - 1/5! + .... 一直到 1 / x!其中 x 是取自用户的整数,我已经编写了这段代码来计算阶乘 x :
import java.util.Scanner;
public class Factorial {
public static void main(String args[]){
Scanner x = new Scanner(System.in);
System.out.println("Enter a number: ");
int number = x.nextInt();
int fact = 1;
for (int i = 1; i <= number; i++){
fact = fact*i;
}
System.out.println("The factorial of "+number+" is "+fact);
x.close();
}
}
但仍然不确定如何编写系列代码,任何提示都会非常感激。
如果我的代码没有组织,我很抱歉我不知道如何使用stackoverflow工具;(。
答案 0 :(得分:2)
理想情况下,您想要的是将您的代码分成多个功能,并在逻辑上进行思考。
既然你说你不想要小费,我会试着让你走上正确的轨道。
提示1:
将您的代码分成多个功能
例如。
public static int factorial(int n){
int fact = 1;
for (int i = 1; i <= n; i++){
fact = fact*i;
}
return fact;
}
这允许您将代码拆分为可管理的块。在适当的时间调用每个块。这使您的代码更易于阅读和更可重用
提示2:
一个主要类和另一个具有函数的类。
理想情况下,您希望创建两个类,一个从用户获取输入,另一个包含所需的所有功能。获取输入的主类将创建另一个类的Object
public class Factorial{
public static void main(String args[]){
Scanner x = new Scanner(System.in);
System.out.println("Enter a number: ");
int number = x.nextInt();
Series s=new Series(number);
s.print();
x.close();
}
在 Series.java
中public class Series{
int output;
int input;
Series(int i){
input=i;
//..here you calculate output
}
public int factorial(int n){
//.... the code
}
public void print(){
System.out.println("The calculation of " + input + " is " + output);
}
}
提示3:
制作一个很好的简单函数来计算输出。随着时间的推移总结所有因子
for (int i = 2; i <= input; i++) {
//if its even
if(i%2==0)
output = output + 1.0 / factorial(i);
else
output = output - 1.0 / factorial(i);
}
将以下内容添加到构造函数中,您将拥有一个构建良好的Java程序
提示4::这些总和将是小数,而不是整数,因此您需要将所有int
替换为double
s
答案 1 :(得分:0)
首先,您必须计算一个术语总和。标准模式就像
double sum = 0;
for (int i = first; i <= last; i++) {
sum += term(i);
}
然后说明
因此,您会注意到每个术语都可以从前一个术语中轻松获得。
这导致
double sum = 0;
double term = (some value);
for (int i = first; i <= last; i++) {
term = (some expression involving i and previous term);
sum += term;
}
锻炼离开了,呵呵,锻炼身体?