2/1  3/2  5/3  8/5  13/8  21/13……求前20项的和??

解决方案 »

  1.   

    public class Cal{public static void main(String args[])
    {
     float num1,num2,sum,temp;
     num1=2;
     num2=1;
     sum=0.0;
     for(int i=1;i<=20;i++)
     {
      sum+=num1/num2;
      temp=num1;
      num1=num1+num2;
      num2=temp;
     }
     System.out.print("和:="+sum);}}
      

  2.   

    public class text {
    public static void main(String[] args) {
    double sum = 0.0000D;

    for(int i=1;i<=20;i++) {
    double a=1;
    a = a+i;
    sum += a/i;
    }
    System.out.print(sum);
    }
    }
    应该是这样,下个数的分子等于上一个数的分子分母相加
      

  3.   

    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;
    }}
      

  4.   

    public class smp
    {
    public static void main(String args[])
    {
    double a=1.0,b=2.0;
    double total=0;
    double [] c=new double [5]; 
    for(int i=0;i<5;i++)
    {
    c[i]=b/a;
    double temp;
    temp=b;
    b=a+b;
    a=temp;
    total+=c[i];
    }
    System.out.println("total="+total);
    }
    }
      

  5.   

    上面我搞错了,弄成前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);
    }
    }
      

  6.   

    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));
    }
    }
      

  7.   


    public class Test{
    public static void main(String []args){
    System.out.println(function(20));
    }
    public static double function(int n){
    int a1 = 1;
    int a2 = 2;
    double sum = 0.0;
    for(int i=1;i<=n;i++){ 
    sum+=a2/a1;
    a2=a2+a1;
    a1=a2-a1;
    }
    return sum;
    }
    }
      

  8.   

    public class Unb {
    public static void main(String[] args){
    double sum=0.0;
    double[] a1=new double [20];
    double[] a2=new double [20];
    a1[0]=2.0;a1[1]=3.0;
    a2[0]=1.0;a2[1]=a1[0];
    for(int i=2;i<20;i++){
    a1[i]=a1[i-1]+a1[i-2];
    a2[i]=a1[i-1];
    }
    for(int b=0;b<20;b++){
    sum=sum+a1[b]/a2[b];
    }
    System.out.println(sum);
    }}
    新手解答,不知对不对
      

  9.   


    public class Run { public static void main(String[] args) throws Exception {
    System.out.println(sum(1));
    }
    //此方法得到第n个数的值
    public static int f(int n){
    if(n == 2)
    return 2;
    if(n == 1)
    return 1;
    return f(n-1) + f(n-2);
    }

    //此方法得到前n项和
    public static int sum(int n){
    if(n == 1)
    return 1;
    return sum(n-1) + f(n);
    }
    }
    我不太明白题意,我是这样理解的,第一项是1,每一项等于前两项的和.不知道符不符合题意.
      

  10.   

    /*分子分母都是
    f(n)=f(n-1)+f(n-2)
    A1=2,A2=3
    B1=1,B2=2
    */
    int fun1(int i){
    if(i==1)return 2;
    if(i==2)return 3;
    return fun1(i-1)+fun1(i-2);
    }
    int fun2(int i){
    if(i==1)return 1;
    if(i==2)return 2;
    return fun2(i-1)+fun2(i-2);
    }
    double sum(){
    double sum=0.0;
    for(int i=1; i<=20;i++){
    sum+=fun1(i)/fun2(i);
    }
    return sum;
    }
      

  11.   

    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;
    }}
      

  12.   

    控制位数就把我的方法改一下就行了import java.text.DecimalFormat;public class text {
    public static void main(String[] args) {
    double sum = 0.0D;
    DecimalFormat   df   =   new   DecimalFormat( "0.0000 "); //控制位数
    for(int i=1;i<=20;i++) {
    double a=1;
    a = a+i;
    sum += a/i;
    }
    System.out.print(df.format(sum));
    }
    }
      

  13.   

    public class bishiti {

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
         bishiti test = new bishiti();
            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;
            } }运行结果为:32.66026079864164
    public class bishiti {



        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){
         bishiti test=new bishiti();
            System.out.println(test.sumAdd(20));
        }
    }运行结果为:34.278294788817234
      

  14.   


    我之前的代码是有问题的,  这里第一个的程序结果对,第二个的错在进行了21次递归,因为当n=0就开始计算,n=19就完成20次了,不过程序还进行多一次n=20,把count改成1就没问题了
      

  15.   


    public class Coent { public static void main(String[] args) {
        float fenzi=2;
        float fenmu=1;
        float sum=0;
        float k=0;
        for(int i=0;i<20;i++){
        
         sum=sum+fenzi/fenmu;
         k=fenzi;
         fenzi=fenmu+fenzi;
         fenmu=k;
        }
        System.out.println("分子"+fenzi);
        System.out.println("分母"+fenmu);
        System.out.println("总和"+sum); }}