有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20项之和。要求用递归。麻烦各位给代码。谢谢!

解决方案 »

  1.   


    public class A {
    public static double cal(int num){
    if(num == 1)
    return 2;
    else if (num == 2)
    return 3.5;
    else
    return cal(num-1) + 1.0 * den(num+1)/den(num);
    } public static int den(int num){
    if(num == 1)
    return 1;
    else if(num == 2)
    return 2;
    else{
    return den(num-1) + den(num-2);
    }
    } public static void main(String[] argv) throws Exception{
    System.out.println(A.cal(20));
    }}
      

  2.   

    public class Calc { public static void main(String[] args) {
    Calc c = new Calc();
    System.out.println(c.calcMethod(a, b, 3));
    } private int total = 1;
    private static double a = 1;
    private static double b = 2; public double calcMethod(double i, double j, int count) { if (total <= count) {
    double c = j / i;
    b = i + j;
    a = j;
    total++;
    return c + calcMethod(a, b, count);
    }
    return 0;
    }
    }
      

  3.   

    i--第一个数,j--第二个数,count--总个数
    System.out.println(c.calcMethod(a, b, 20));即可
      

  4.   


    public static void main(String[] args) {
         
    double fenziNm=2;
    double fenmuNm=1;
    double total=0.0;
    for(int i=0;i<20;i++)
    {
               if(i==0)
               {
                total=fenziNm/fenmuNm;
                
               }
               else
               {
                double temp1=0;
                double temp2=0;
                temp1=fenziNm;
                temp2=fenmuNm;
                fenziNm=temp1+temp2;
                fenmuNm=temp1;
                total=total+fenziNm/fenmuNm;
               
               }
               
    }
    System.out.println(total);
        }
      

  5.   


    package vi;public class Test {
    public static double sequenceSum(double n,int temp){
    double m=0;
    while(temp<20){
    m=(1/n)+1;
    temp++;
    m+=sequenceSum(m,temp);
    break;
    }
    return m;

    }
    public static void main(String[] args) {
    double m=sequenceSum(1.0,0);
    System.out.println(m); }}用了递归反而麻烦...