#include <stdio.h>
int main()
{
int i,N;
double sum=0;
scanf("%d",&N);
for(i=1;i<=N;i++)
sum=sum+1.0/(i*2-1);
printf("sum = %.6f",sum);
return 0;
}
23
sum = 2.549541
--------------------------------
Process exited after 2.295 seconds with return value 0
请按任意键继续. .
#include <stdio.h>
int main()
{
int i,N;
double sum=0;
scanf("%d",&N);
for(i=1;i<=N;i+=2)
sum=sum+1.0/i;
printf("sum = %.6f",sum);
return 0;
}
23
sum = 2.224353
--------------------------------
Process exited after 1.858 seconds with return value 0
请按任意键继续. . .
N=5的时候,代码一的分母上限是9,二的分母上限是5
for 循环里面的语句不一样好吧,具体看下图,说不清。。。。
主要是你这两个方法中对N的di定义是不一样的。直接举例的话,假设N=2,第一种算的是1+1/3,而第二种只会算一个1。
第一个循环计算了N次,所以值更大;
第二个循环只计算了N/2次,所以就小了很多;
第二个循环结束条件错了。应该是:
for(i=1;i<=N*2-1;i+=2)
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
第一种的循环每次只+1,所以循环执行了N次,
第二种的循环每次+2,循环只执行了N/2次
如有帮助,请采纳一下,谢谢。
肯定是某一种算法有问题了