黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处…1 3 4 7 11 18 29 47 … 称为“鲁卡斯队列”。它后面的每一个项都是前边两项的和。你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。请写出该比值。格式是:分子/分母。比如:29/47
import java.math.BigDecimal;
public class huangjinfengeshu {
public static double format(double d) {
BigDecimal bd=new BigDecimal(d).setScale(6,BigDecimal.ROUND_HALF_UP);
double dd=bd.doubleValue();
return dd;
}
public static void f(int a,int b) {
double d=format((double)a/b);
if(d==0.618034) {
System.out.println(a+"/"+b+"="+d);
return;
}
f(b,a+b);
}
public static void main(String[] args) {
f(1,3);
}
}
关于BigDecimal
BigDecimal是标准的类,在编译器中不需要特殊支持,它可以表示任意精度的小数,并对他们进行计算。
在内部,可以用任意精度任意范围的值和一个换算因子来表示BigDecimal,换算因子表示