最近有一好友,是个大学生,在参加学校的数学算法大赛,内容就是黄金分割数精确到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<