为何我用R实现沃利斯乘积计算无法得到圆周率pi的正确值
代码错误原因
- 未实现累乘逻辑:当前代码循环中每次直接给
r赋值为当前迭代项的计算结果,循环结束后r仅保留了i=n时的单值,没有累计所有项的乘积,不符合沃利斯乘积的计算规则 - 累乘变量未初始化:没有给
r设置初始值1,累乘操作缺少计算起点
修正后代码
W <- function(n) { r <- 1 for (i in 1:n) { r <- r * 2*i/(2*i-1) * 2*i/(2*i+1) } print(r*2) }
运行验证
执行修正后的代码可以看到:
W(10)输出约为3.067703W(50)输出约为3.125781- 随着n的取值增大,结果会逐渐逼近圆周率
pi的真实值3.1415926...
内容的提问来源于stack exchange,提问作者user16461886
相关产品推荐
相关产品推荐

