求解释简单Java程序,题目是: 计算1+2!+3!+4!......从第10项到第20项之和
publicclasstest2{publicstaticvoidmain(Stringargs[]){doublesum=0,a=1;inti=1;while(i<=2...
public class test2
{
public static void main(String args[])
{
double sum=0,a=1;
int i=1;
while(i<=20)
{
if(i>=10)
sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}
可以运行,只是不清楚里面的阶层通项为什么是这么表示的,求各路好手不吝赐教。。菜小鸟本人感激不尽。。。
第十项不是10!吗,a怎么赋值是1的呢?还有那个阶层通项为什么这样表示? 展开
{
public static void main(String args[])
{
double sum=0,a=1;
int i=1;
while(i<=20)
{
if(i>=10)
sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}
可以运行,只是不清楚里面的阶层通项为什么是这么表示的,求各路好手不吝赐教。。菜小鸟本人感激不尽。。。
第十项不是10!吗,a怎么赋值是1的呢?还有那个阶层通项为什么这样表示? 展开
5个回答
展开全部
a是拿来计算第n项的,初始值设为1 ,因为后面要用乘法计算每一项。
第一项 i=1 a=a*i; 于是 a=1
第二项 i=2 a=a*i; 于是,a在1的基础上,乘以2
第三项 i=3 a=a*i; 于是,a在 1*2的基础上,再乘以3
第四项 i=4 a=a*i; 于是,a在 1*2*3的基础上,再乘以4
……
第九项 i=9 a=a*i; a=9!
第十项 i=10 a=10!
第十一项 i已经大于等于10 sum加上a的值,即10! i自增为11 计算a=11!
第十二项 i 大于等于10 sum再加上a的值,即11!i 自增为12 计算a=12!
……
第一项 i=1 a=a*i; 于是 a=1
第二项 i=2 a=a*i; 于是,a在1的基础上,乘以2
第三项 i=3 a=a*i; 于是,a在 1*2的基础上,再乘以3
第四项 i=4 a=a*i; 于是,a在 1*2*3的基础上,再乘以4
……
第九项 i=9 a=a*i; a=9!
第十项 i=10 a=10!
第十一项 i已经大于等于10 sum加上a的值,即10! i自增为11 计算a=11!
第十二项 i 大于等于10 sum再加上a的值,即11!i 自增为12 计算a=12!
……
追问
恍然大悟。。。应该不用break语句了吧?2楼说要,不是有条件限制了吗?还有哦,a = a*i不是在i >= 10的时候才用的?唉,看来我还是对if语句理解有误。。。。杯具。。。
展开全部
阶乘的算法就是一个递归,a=a*i;
这个就是一个递归,前面是计算总和, sum=sum+a;
double sum=0,a=1;
这句话别这么用:应该为int sum=0,a=1;
这个就是一个递归,前面是计算总和, sum=sum+a;
double sum=0,a=1;
这句话别这么用:应该为int sum=0,a=1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实你这样做结果是对的,但是按照题的思路 你这样做不妥,为什么?因为1+2!+3!+4!......
这个代表这是无限循环, 所以用无限循环来做这一题, 你确实把他固定在循环20项,这样会被扣分的, 我建议用无限循环,然后到了第20项break 跳出
这个代表这是无限循环, 所以用无限循环来做这一题, 你确实把他固定在循环20项,这样会被扣分的, 我建议用无限循环,然后到了第20项break 跳出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j就是个简单的 循环语句啊 每次循环 从第十项开始到 20项结束
追问
阶层通项为什么是这么表示的? 10!~20!之和
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Test2
{
public static void main(String args[])
{
double sum=0,a=1;
int i=1;
while(i<=20)//因为求的最大数的是20的阶层
{
if(i>=10)//判断当从第十项开始相加
sum=sum+a;//如果是前9项这行代码不执行
i++;//跳到下一个数去
a=a*i;//计算i的阶层,因为i的阶层等于i-1的阶层乘以i
}
System.out.println("sum="+sum);
}
}
{
public static void main(String args[])
{
double sum=0,a=1;
int i=1;
while(i<=20)//因为求的最大数的是20的阶层
{
if(i>=10)//判断当从第十项开始相加
sum=sum+a;//如果是前9项这行代码不执行
i++;//跳到下一个数去
a=a*i;//计算i的阶层,因为i的阶层等于i-1的阶层乘以i
}
System.out.println("sum="+sum);
}
}
更多追问追答
追问
a=a*i不是i>=10才用的吗
追答
不是,是一直有用,只有sum=sum+a才是,你要知道这个if语句没有加括号,说明它只能作用后面的一句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询