日期:2014-05-20 浏览次数:21003 次
public class Test {
    public static void main(String[] args) {
        System.out.println(calc(20));
    }
    static double calc(int n) {
        int[] nums = new int[n + 1];
        nums[0] = 1;
        nums[1] = 2;
        for (int i = 2; i < n + 1; i++)
            nums[i] = nums[i - 2] + nums[i - 1];
        double sum = 0;
        for (int i = 0; i < n; i++) {
            sum += nums[i + 1] * 1.0 / nums[i];
        }
        return sum;
    }
}
------解决方案--------------------
上面我搞错了,弄成前5个了,应该是前20个数,源代码是这样的:
public class smp
{
    public static void main(String args[])
    {
        double a=1.0,b=2.0;
        double total=0;
        double [] c=new double [20]; 
        for(int i=0;i<20;i++)
        {
            c[i]=b/a;
            double temp;
            temp=b;
            b=a+b;
            a=temp;
            total+=c[i];
        }
        System.out.println("total="+total);
    }
}
------解决方案--------------------
public class Test003 {
    private static int count=0;
    private static double sum=0;
    public double sumAdd(int n){
        return this.sumAdd(2, 1, n);
    }
    public double sumAdd(double c,double bc,int n){
        if(n>=count){
            count++;
            sum+=c/bc;
            return sumAdd(c+bc,c,n);
        }else{
            return sum;
        }        
    }
    public static void main(String[] args){
        Test003 test=new Test003();
        System.out.println(test.sumAdd(20));
    }
}
------解决方案--------------------
public class HelloUbuntu {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HelloUbuntu test = new HelloUbuntu();
        System.out.println(""+test.sum(20));
        //32.66026079864164
    }
    double fun1(int i){
        if(i==1)return 2;
        if(i==2)return 3;
        return fun1(i-1)+fun1(i-2);
        }
    double fun2(int i){
        if(i==1)return 1;
        if(i==2)return 2;
        return fun2(i-1)+fun2(i-2);
        }
    double sum(int n){
        double sum=0.0;
        for(int i=1; i<=n;i++){
        sum+=fun1(i)/fun2(i);
        }
        return sum;
        }
}