黄金分割点
public class GoldCut {
public static void main(String[] args) {
final double GOLDEN_SECTION_RATIO=0.618;
int i,j,finalI=1,finalJ=1;
double diff,minDiff=1;
for(i=1;i<20;i++) //分子i从1至19
{
for(j=i+1;j<=20;) //分母j从i+1开始
{
diff=Math.abs((double)i/j-GOLDEN_SECTION_RATIO);
if(diff<minDiff)
{//如果i/j更接近0.618
finalI=i;
finalJ=j;
minDiff=diff;
}
if(i%2==0) //如果分子是偶数,分母只取i之后的奇数
j+=2;
else
j++;
}
}
System.out.println("距离黄金分割点0.618最近的两个数相除是"+finalI+"/"+finalJ+
"="+(double)finalI/finalJ);
}
}

浙公网安备 33010602011771号