黄金连分数(java大法好)

黄金连分数(java大法好)_第1张图片
思路:根据题意,我们可以推出来这个黄金分数的前几项是1,1/2,2/3,3/5…可以发现是斐波那契数列相除。打表找出是哪两项相除,然后再用java大数高精度去做就可以了。注意一点:题目给的小数点后的那几个数,是四舍五入之后的,这样我们在找的时候需要四舍五入,不能因为前几项符合就行。

import java.math.BigDecimal;
import java.math.BigInteger;
public class Main {
	public static void main(String[] args){
		BigInteger a=BigInteger.ONE;//ONE:BigInteger 的常量 1。
		BigInteger b=BigInteger.ONE;
		for(int i=3;i<500;i++){
			//迭代
			BigInteger t= b;
			b=a.add(b);//b=a+b
			a=t;
		}
		BigDecimal divide=new BigDecimal(a,110).divide(new BigDecimal(b,110),BigDecimal.ROUND_HALF_DOWN);//四色五入:ROUND_HALF_DOWN
		System.out.println(divide.toPlainString().substring(0,103));//截到小数点后101位,再四舍五入
	}
}

努力加油a啊,(o)/~

你可能感兴趣的:(黄金连分数(java大法好))