java编程计算1+3!+5!+...+(2n-1)! 前10 项和。小弟编写的代码如下

int i;
int j=1;
int sum = 0;
for(i=1;i <= 19;i=2*i-1){
j=j*i;
sum=sum+j;
}
System.out.println("1~19的奇数阶乘和为"+sum);
代码的运行结果出问题了,请高手指点!

(1)控制循环的i=2*i-1有问题,这样做i第一次循环是1,第二次循环是3,第三次循环是2*3-1=5
第四次循环i=2*5-1=9 ,这样7!没计算,再下次循环就是i=2*9-1=17,更加错了
(2)计算i!的循环有问题,仅是i=i*j是有问题,如第二次循环中i=3,j=j*i=1*3,3!应该是1×2×3
(3)阶乘的数值很大,不能用int类型保存,比例中可以使用long 类型保存结果。

public static void main(String[] args)
{
long j=1,sum=1;
for(int i=3;i<=19;i+=2)
{
j=j*(i-1)*i;
sum=sum+j;
System.out.println(""+i+"!="+j);//这句话可以用于输出中间的阶乘,不需要可注释掉
}
System.out.println("sum="+sum);
}
输出如下:
3!=6

5!=120
7!=5040
9!=362880
11!=39916800
13!=6227020800
15!=1307674368000
17!=355687428096000
19!=121645100408832000
sum=122002101778601647
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-07
前一位哥们没看清题目
int sum = 0;
for (int i = 1; 2*i-1 <= 19; i++) {
int sum1 = 1;
int x = 2*i-1;
for (int j = 1; j <= x; j++) {
sum1 = sum1 * j;
}
sum = sum + sum1;
}
System.out.println("1~19的奇数阶乘和为"+sum);
首先你的循环中i=1在无限循环,要改成i++,就是每循环一次i递增1
然后你是要加到19为止,就必须是2*i-1<=19
然后
1! = 1
3! = 1*2*3
5! = 1*2*3*4*5
这些必须体现出来,也就是j的用处,j从1递增到2*i-1,然后乘起来形成sum1
最后把所有sum1加起来本回答被提问者采纳
第2个回答  2013-10-07
for(i=1;i <= 19;i=2*i-1){
好好看看 这个for 循环总是 在执行 i=1,
改一下
for(i=1;i <= 19;i++){
if(i/2 != 0){
j=j*i;
sum=sum+j;
}

}

求采纳
第3个回答  2013-10-07
你是用递归调用来解决.

java编程计算1+3!+5!+...+(2n-1)! 前10 项和。小弟编写的代码如下
然后你是要加到19为止,就必须是2*i-1<=19 然后 1! = 1 3! = 1*2*3 5! = 1*2*3*4*5 这些必须体现出来,也就是j的用处,j从1递增到2*i-1,然后乘起来形成sum1 最后把所有sum1加起来

java编程,运算1+3+5+7+……+2n-1
public static void main(String args[]) { Scanner input = new Scanner(System.in);System.out.print("输入n:");int n = input.nextInt();int sum = 0;for (int i = 1; i < n + 1; i++) { sum = sum + 2 * i - 1;} System.out.println("运算结果为:" + sum);} ...

如何编写函数求和:s=1+(1+3)+(1+3+5)+...+(1+3+5+...+(2n-1))
private int sum(int n){ if(n==1){ return 1;}else{ return (2*n-1)+sum(n-1);}}

MATLAB编程:计算1+3+5+7+…+(2n+1)的值(用input语句输入n 值)
1+3+5+...2*n+1 n=input('please input n=');sum=0;for i=1:n;sum=sum+2*i-1;end sum

用JAVA程序 分别求出1--100间的奇数,偶数之和.
{ public static void main(String[] args){ int sumOdd=0;\/\/求奇数和的变量 int sumEven=0;\/\/求偶数之和的变量 for(int i=1;i<=100;i++){ while(i%2!=0){ sumOdd+=i;break;} do { if(i%2==0){ sumEven+=i;} break;}while(i>100);} System.out.println("奇数之和为...

编写程序如何求1+2+3+...+ n的和?
编写程序求1+2+3+...+n的和具体如下:一、简述 INPUT:n,S=0,i=1,WHILE:i<=n,,S=S+i,i=i+1,WEND,PRINT“S=”;S,END。二、编写程序 1、编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终...

计算1+3+5+...+(2n+3)
1+3+5+...+(2n+3)=(n+2)*(n+2)你可以验算:n=0 1+3+5+...+(2n+3)=4 n=1 1+3+5+...+(2n+3)=9 n=2 1+3+5+...+(2n+3)=16 ~~~

输入一个正整数n,计算1+1\/3+1\/5+...的前 n 项之和?
如果要计算分数表达的精确结果,那么分母可能达到几十位甚至更多位数。因为,通分的分母为3、5、7...n的最小公倍数,随着n的增加,分母的位数快速增多。更实际的方法,是计算它的高精度近似值,比如几十位有效数字。以下为fortran编写的代码,具体算法见绿色字体注释。有效位数为65位。下面附若干计算的...

2.如何用matlab 根据y=1+1\/3+1\/5+L +1\/(2n-1),求(1)y<3时的最大n值...
内容如下:function [Y,N] = qiumin for n = 1:10000 y=f(n);if y>3 N = n;Y = y;return;end end function y = f(n)y=0;for i = 1:n y = y+1\/(2*i-1);end MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号...

利用大整数计算前2!+4!+6!+….+2n!的和,其中n由键盘输入,并要求如果输 ...
m=0 循环(i=1 到 n) \/\/得到1 到n的所有数 { j=1 循环(k=1 到 i ) \/\/求出i的阶乘j { j=k*j } m=m+j \/\/求出1!+2!+3!...} 输出2!+4!+6!+….+2n!=2*m OK就这样,java我不会,只给你思路 ...

相似回答