结果没看懂是怎么算出来的,int s=0;for(int i=0;i9*i;j--)\x05s+=i*j;}System.out.println(s);上一题为10int s=0;for(int i=0;i8*i;j--)\x05s+=i*j;}System.out.println(s);那为什么这题为19越看越糊涂了

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 11:41:11

结果没看懂是怎么算出来的,
int s=0;
for(int i=0;i9*i;j--)
\x05s+=i*j;
}
System.out.println(s);
上一题为10
int s=0;
for(int i=0;i8*i;j--)
\x05s+=i*j;
}
System.out.println(s);
那为什么这题为19
越看越糊涂了

让我们来分析下这两个程序的不同点:循环的判定条件j>9*i和j>8*i
这决定了两个程序的循环处理次数是不一样的
对于第一个程序而言
第一次循环:i=0:j取得值为{10,9,8,7,6,5,4,3,2,1};则s的结果为 s = (0*10)+(9*0)+...(1*0) = 0
第二次循环:i=1:j能取到的值为{10},则s的结果为s= 0+(1*10) = 10;
循环结束 :s = 10
对于第二个程序而言
第一次循环:i=0:j取得值为{10,9,8,7,6,5,4,3,2,1};则s的结果为 s = (0*10)+(9*0)+...(1*0) = 0
第二次循环:i=1,j能取到的值为{10,9},则s的值为s=0+(10*1)+(9*1) = 19;
循环结束
s=19
两个程序的关键就在于当i>1时,其实程序就结束了,而当i=0时,无论如何s都等于0,所以只要考虑i=1时,j的循环次数就行了