连续分数

时间:2014-02-18 03:16:52

标签: java math recursion

我对连续分数的理解是它总是以分数形式给出小数的表示。我认为连续分数总是返回小于或等于十进制数的值。不幸的是,我的代码偶尔会返回大于十进制输入的小数值。

我对连续分数的理解是否正确?如果是这样,请解释我的代码中的错误所在。

public static Rational contFrac(double a, int i,int n){
    if(i<n){
        boolean neg = false;
        if(a<0){
            neg = true;//need a helper method to take care of this
        }
        double reci = Math.abs(1/a);//the reciprocal of a given decimal value
        double remain = reci%1;//the decimal portion of the reciprocal
        double intprt = reci - remain;//the 'integer' portion of the reciprocal
        Rational inter = new Rational((long)intprt);//creates a new rational number using the 'integer' portion of the reciprocal
        if(remain !=0){
            inter = inter.add(contFrac(remain,i+1,n));      
        }           
        return (reciprocal(inter));//gets the reciprocal of a rational number
    }
    else{
        return new Rational(0);
    }       
}

2 个答案:

答案 0 :(得分:2)

我确定计算机正在围绕您的1/a

答案 1 :(得分:1)

连续分数的收敛在大于和小于极限之间交替。因此,您的观察行为是可以预期的。

或换句话说,限制总是在两个连续的收敛之间。