圆周率π的递推公式如下:
以半径为1的圆开始,依次在圆内画正六边形、正十二边形、正6n边形...。
只有n趋近于无穷大,便可以得到足够接近圆的正多边形,计算的圆周率π也就越精确。
完整代码如下:
package cn.whut.num;
import java.util.Scanner;
public class pai {
static void cyclotomic(int n) //割圆术算法
{
int i,s;
double k,len;
i=0;
k=3.0; //初值
len=1.0; //边长初值
s=6; //初始内接正6边形
while(i<=n)
{
System.out.printf("第%2d次切割,为正%5d边形,PI=%.24f\n",i,s,k*Math.sqrt(len));
s*=2; //边数加倍
len=2-Math.sqrt(4-len); //内接多边形的边长
i++;
k*=2.0;
}
}
public static void main(String[] args) {
int n;
System.out.print("输入切割次数:");
Scanner input=new Scanner(System.in);
n=input.nextInt(); //输入切割次数
cyclotomic(n); //计算每次切割的圆周率
}
}
效果如下: