正在回答 回答被采纳积分+1
同学你好,不可以的,因为n是定值。假如我们在输入框中输入“3”,那么n就是固定的3,如果使用n/n+1,代码如下:
for循环执行过程如下:
初始时i=1,sum=初始时的sum+n/(n+1)=0+3/4=3/4(初始sum是0,n是3)。
当i=2时,sum=上一次的sum+n/(n+1)=3/4 + 3/4(上一次sum是3/4,n是3)
当i=3时,sum=上一次的sum+n/(n+1)=(3/4 + 3/4) + 3/4 (上一次sum是3/4 + 3/4,n是3)。
即当输入3时,上述代码得到的sum=3/4 + 3/4 + 3/4 ,而我们想要的结果是n是3时,sum=1+1/2+2/3,结果不同,所以不能使用n/(n+1)。
祝学习愉快!
同学你好,老师给你换个思路,看同学能否理解:
我们的目的是求出“1+1/2+2/3+3/4+4/5...n-1/n”这样一个式子:
当在输入框中输入3时,式子中的n就是3,最终的式子就是:1+1/2+2/3。
此时可以将1+1/2+2/3拆成如下两部分的和,这样实现起来会更简单些:
即对应如下代码:
代码执行过程如下:
当输入的n是3时,在for循环中,i从1开始:
当i等于1时,sum等于初始值加上(i-1)/1,即sum=0+(1-1)/1=0/1。
当i等于2时,sum等于上一步的sum(i等于1是的sum),加上(i-1)/i,即sum= 0/1 + (2-1)/2=0/1+1/2 ,由于0/1的结果是0,不影响最终结果,可以去掉,因此当i等于2时,sum=1/2。
当i等于3时,sum等于i=2时的sum,加上(i-1)/i,即sum= 1/2+(3-1)/3=1/2+2/3。此时for循环结束,sum的值正好对应最终结果中的后半部分:
只要再加上1就是最终结果,所以最后要给sum加1:
祝学习愉快!
同学你好,按照同学所写的代码,执行过程如下:
以输入3为例(小数位多的话,计算机计算的结果可能会存在误差):
第一次循环:3-1 = 2,2/3 = 0.6666666666666666,再+1,得到的结果为1.6666666666666665
第二次循环:3-1 = 2,2/3 = 0.6666666666666666,第一次的结果再+1,得到的结果为2.6666666666666665
第三次循环:3-1 = 2,2/3 = 0.6666666666666666,第二次的结果再+1,得到的结果为3.6666666666666665
当输入3时:正确的sum应该是“1+1/2+2/3”=2.1666666666666665,你的代码算出的结果和要求不一样,所以是不对的。
同学的代码中定义了sum,结果赋值给sum即可,修改如下:
执行过程如下:
以输入3为例:
第一次循环:1-1 = 0,0/1 = 0,sum的值为0
第二次循环:2-1 = 1,1/2= 0.5,sum的值为0.5
第三次循环:3-1=2,2/3 = 0.6666666666666666,sum的值为0.5+0.6666666666666666 = 1.1666666666666665
结果再加1,得到的结果为2.1666666666666665
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星