标题:菜鸟级数学数列求和的问题求助
只看楼主
一直很近
Rank: 2
等 级:论坛游民
帖 子:34
专家分:29
注 册:2010-4-6
结帖率:100%
已结贴  问题点数:20 回复次数:7 
菜鸟级数学数列求和的问题求助
一道数学题,求数列2/1      3/2     5/3       8/5       13/8...的前二十项和,我想用for循环,但不知问题在哪里还请指点
#include "stdio.h"
void main()
{
double m=1,n=2,a[i];
for(i=1;i<=20;)
{a[i]+=n/m;    /*让商值不断累积最后赋予a[20]*/
m=n;
n=m+n;  /*把数列规律重新定义m,n值*/
i++;
}
cout<<a[20]<<endl;
}
搜索更多相关主题的帖子: 级数 求和 
2010-04-08 10:48
yjy1987420
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:120
注 册:2009-9-14
得分:3 
这个貌似不用数组。把a[i]换成a就好了。定义a初值为0.
2010-04-08 10:54
一直很近
Rank: 2
等 级:论坛游民
帖 子:34
专家分:29
注 册:2010-4-6
得分:0 
回复 2楼 yjy1987420
如果我取消数组,那我要怎样才能确定是求的前二十项之和呢?
2010-04-08 11:02
yjy1987420
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:120
注 册:2009-9-14
得分:2 
...............你for循环控制的次数啊。
2010-04-08 11:03
一起补天
Rank: 2
等 级:论坛游民
帖 子:73
专家分:61
注 册:2008-9-19
得分:0 
楼主用C语言做的,你看看应该合适你的要求
#include<stdio.h>
void main()
{
 int i;
 double m=1.0,n=2.0,sum=n/m,x=0.0,y=0.0;
 for(i=1;i<20;i++)
 {
   x=n;
   y=m+n;
   sum+=y/x;
   m=x;
   n=y;
 }
  printf("%f",sum);
  return 0;
}
2010-04-08 11:21
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
得分:5 
#include <iostream>
#define NUM 20 //项数
using namespace std;
int main()
{
    double m=1,n=2,a = 0, tmp;
    for(int i = 0; i < NUM; i ++)
    {
        a += n/m;
        tmp = m;
        m = n;
        n = tmp + n;
    }
    cout<<a<<endl;
}
在变换m,n时有问题
2010-04-08 11:23
木秋
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2010-4-3
得分:5 
#include "stdio.h"

float getSeriesSum(int num)
{
int molecule=2;
int denominator=1;
float result=0.0;
int i;
for(i=0;i<num;i++)
{
    result+=(float)molecule/denominator;
    molecule=molecule+denominator;
    denominator=molecule-denominator;
}
return result;
}

float getSeriesSum_0(int num)
{
int molecule=2;
int denominator=1;
int res_molecule=0,res_denominator=1;
int i;
for(i=0;i<num;i++)
{
    res_molecule=res_molecule*denominator+molecule*res_denominator;
    res_denominator=res_denominator*denominator;
    molecule=molecule+denominator;
    denominator=molecule-denominator;
}
return (float)res_molecule/res_denominator;
}


int main()
{
int i;
double m=1,n=2,a=0;
for(i=1;i<=20;)
{a+=n/m;    /*让商值不断累积最后赋予a[20]*/
n=m+n;
m=n-m;  /*把数列规律重新定义m,n值*/
i++;
}
printf("%f\n",a);
//cout<<a[20]<<endl

system("pause");
return 0;
}
2010-04-08 16:07
xiaoxinwan
Rank: 2
等 级:论坛游民
帖 子:52
专家分:91
注 册:2010-4-6
得分:5 
#include<stdio.h>


void main(void)
{
    int i;
    double a[20]={2,3};       //分子前20个数字;
    double b[20]={1,2};       //分母前20个数字;
    double sum;
    sum=a[0]/b[0] +a[1]/b[1];  //前两项和
    for(i=2;i<20;i++)
    {
        a[i]=a[i-2]+a[i-1];
        b[i]=b[i-2]+b[i-1];
        sum=sum+a[i]/b[i];         //20项之和
    }
    printf("sum=%f\n",sum);
    getch();
}
我写得比较简单,容易理解一点。
2010-04-08 17:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-302163-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.441332 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved