一道c语言编程题 我觉得答案不对
根据以下公式求pi(要求精度为0.0005即某项小于0.0005时停止迭代)pi/2=1+1/3+1*2*3/(3*5*7)+...1*2*3*...n/(3*5*7*....
根据以下公式求pi (要求精度为0.0005 即某项小于0.0005时停止迭代)
pi/2=1+1/3+1*2*3/(3*5*7)+...1*2*3*...n/(3*5*7*...(2n-1))
答案为(这里我只写调用函数)
double fun(double e)
{double s; float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while (s>=e)
{pi+=s; t=n/(2*n+1);
s*=t; n++;}
pi=pi*2;
return pi;}
我认为答案的代码是编写1+1/3+1*2/(3*5)+1*2*3/(3*5*7).......
这与公式不同 请问我的想法对吗 ??
这题应该怎么正确编写
ps;上面的代码是书上的答案 但是我认为书上的答案不对。。。 展开
pi/2=1+1/3+1*2*3/(3*5*7)+...1*2*3*...n/(3*5*7*...(2n-1))
答案为(这里我只写调用函数)
double fun(double e)
{double s; float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while (s>=e)
{pi+=s; t=n/(2*n+1);
s*=t; n++;}
pi=pi*2;
return pi;}
我认为答案的代码是编写1+1/3+1*2/(3*5)+1*2*3/(3*5*7).......
这与公式不同 请问我的想法对吗 ??
这题应该怎么正确编写
ps;上面的代码是书上的答案 但是我认为书上的答案不对。。。 展开
4个回答
展开全部
答案的代码的确是编写1+1/3+1*2/(3*5)+1*2*3/(3*5*7)....这没有错,你理解的很好。
我觉得错的是pi/2=1+1/3+1*2*3/(3*5*7)+...1*2*3*...n/(3*5*7*...(2n-1))这里题目写漏了
根据最后一个表达式n!/(3*5*7*...(2n-1))可以知道每个位置的数,当n=1时为第一位数,n=k时为第
k位数,所以第三项应该为1*2/(3*5),原题写漏了
书上的答案代码没问题,但是出题时的数列写错了,写漏了一个
我觉得错的是pi/2=1+1/3+1*2*3/(3*5*7)+...1*2*3*...n/(3*5*7*...(2n-1))这里题目写漏了
根据最后一个表达式n!/(3*5*7*...(2n-1))可以知道每个位置的数,当n=1时为第一位数,n=k时为第
k位数,所以第三项应该为1*2/(3*5),原题写漏了
书上的答案代码没问题,但是出题时的数列写错了,写漏了一个
展开全部
思路有错误。。
数字有规律的,
楼主可以这样:
定义两个double变量fenzi,fenmu,并初始化成1
定义一个int变量 i = 1开始,在while里边做循环
每次
fenzi = fenzi * i;
funmu = fenmu * (2*i-1)
然后 fenzi/fenmu 就是每次的结果
累加自己操作吧,你会的,我懂的!~~~
数字有规律的,
楼主可以这样:
定义两个double变量fenzi,fenmu,并初始化成1
定义一个int变量 i = 1开始,在while里边做循环
每次
fenzi = fenzi * i;
funmu = fenmu * (2*i-1)
然后 fenzi/fenmu 就是每次的结果
累加自己操作吧,你会的,我懂的!~~~
追问
请问你说的是书上答案有问题 还是我的思路有问题?
追答
你写的这个有一些问题,也就是书上的答案是错的。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
pi/2=1+1/3+1*2*3/(3*5*7)+...1*2*3*...n/(3*5*7*...(2n-1))
可以看成是
pi/2=1+1/(2*1+1)+(1/(2*1+1))*(2/(2*2+1))*(3/(2*3+1))所以可以这么写
t=1
i=1;
while(t>e)
{
pi+=t;
t*=i/(2*i+1);
i++
}
可以看成是
pi/2=1+1/(2*1+1)+(1/(2*1+1))*(2/(2*2+1))*(3/(2*3+1))所以可以这么写
t=1
i=1;
while(t>e)
{
pi+=t;
t*=i/(2*i+1);
i++
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个题目掉了一项1*2/(3*5)
而且有个地方错了t=n/(2*n+1);
应该是t=n/(2*n-1);
因为从题目可以看出1*2*3*...n/(3*5*7*...(2n-1))
这个题目我做过的
而且有个地方错了t=n/(2*n+1);
应该是t=n/(2*n-1);
因为从题目可以看出1*2*3*...n/(3*5*7*...(2n-1))
这个题目我做过的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询