java - 在java中使用递归计算pi
问题描述
我正在研究一种应该利用递归来计算 pi 的方法。然而,问题在于,为了接近,输入数字(num)需要非常高。如下图所示,输入 5000 使我到达 3.141392653591791。有什么我做错了吗?
import java.lang.Math;
public class PiSeries {
public static double calculatePi(double num) {
if(num == 1) {
return 4;
} else {
return (4*((Math.pow(-1,num+1))/((2*num)-1)) + calculatePi(num-1));
}
}
public static void main(String[] args) {
System.out.println(calculatePi(5000));
}
}
解决方案
发布的方程式可能不正确 - 检查初始值。实现的代码没有发布方程(停在num == 1
),但在数学上似乎是正确的(计算 PI)。
5000
元素 - >关于1 / (2*5000-1) = 1/10000
那个错误,第四个十进制数字
推荐阅读
- php - 实时 laravel 服务器上的上传图像限制
- flutter - 全球密钥
当我在 Flutter 中提交表单时 ().currentState.save() 正在下降 - azure - ARM 模板 - 在请求中发现错误的 JSON 内容。(代码:BadRequest)
- javascript - 错误:[object Object] 不是 PostCSS 插件
- tensorflow - 如何使用 bazel 构建 tensorflow 作为外部依赖项来支持 gpu 推理?
- javascript - 如果数据包含特定的文本,则隐藏元素?
- c++ - 在 Docker 中连接到 C++ websocketpp 服务器
- php - 如何使用laravel中的碳在给定日期从现在开始获取最新日期
- c# - Entity Framework Core - 带有反射的通用 Set 方法
- go - 是否有在环 Z/nZ 中查找 int 的乘法逆的函数?