Advertisement

三種方法計算黃金分隔數 Java代碼

阅读量:

近期有一位大学同学,正在参与校内的数学算法竞赛,题目要求精确计算黄金分割数至小数点后100位。针对这一问题,我尝试了三种不同的计算方法:

首先,采用最为基础的模拟除法进行运算:

复制代码
        Long t1=new Date().getTime();
        BigDecimal b1 = new BigDecimal(1);//初次参数分母
        BigDecimal b2 = new BigDecimal(1);//不变的分子
        List<BigDecimal> BD=new ArrayList<BigDecimal>();
        BD.add(b1);
        for(int i=0;i<10000;i++){//多次执行,使结果更精确
            //将 (1+1/1) 当作一个对象存到一个集合,每次循环都执行1+(1/上次的对象),然后将这个结果转成新的对象放到集合中
            BD.add(b2.divide(((BD.get(BD.size()-1)).divide(b2)).add(b2),110,BigDecimal.ROUND_DOWN));
        }
        System.out.println((BD.get(BD.size()-1)).setScal

全部评论 (0)

还没有任何评论哟~