回 帖 发 新 帖 刷新版面

主题:我写得程序错在哪?麻烦哪位高手指点指点

//题目:
//2.写一个函数,用递归函数完成以下运算:
//sum(n) =  1 - 1/2 + 1/3 - 1/4 + … -(1/n)*(-1)n  
//      (其中n>0)
//
//
//
#include<iostream>
#include<cmath>
using namespace std;

float sum(int n)
{ int i;
 for(i=1;i<=n;i++)
  {double pow(double x,int y);
  double t=pow(-1.0,i);
  sum(i)=(sum(i-1)-(1/i)*t);//?????????????????????????????
return sum(i);
}

int main()
{cout<<"enter a n:";
int n;
cin>>n;
float b=sum(n);
cout<<"sum="<<b<<endl;
return 0;
}
 [color=FF0000][/color][b]题目[/b]

回复列表 (共4个回复)

沙发


#include<iostream>
#include<cmath>
using namespace std;

float sum(int n)

    if(n==1)
        return 1;
    else
    {
        return (sum(n-1)-(1.0/n)*pow(-1,n));
    }

}

int main()
{
    int n;
    float b;
    cout<<"enter the number:";
    cin>>n;
    b=sum(n);
    cout<<"sum="<<b<<endl;
    return 0;
}


你的程序写得实在是怎么说呢?你肯定编程动手太少了,我只能这样帮你改了,其实我以前也是这样,不动手想学编程真的行不通,我现在已经觉悟了开始每天动手练习,所以希望你也可以这样如果你喜欢编程的话

板凳

#include <stdio.h>

double sum(int n);

/* sum.c */
int main()
{
    int i;
    
    for(i = 1; i <= 1000; ++i)
    {
        printf("::sum(%d)::\t%g\n", i, sum(i));
    }
    
    system("pause");
    return i;
}

double sum(int n)
{
    double f, sign;
    
    f = 0.0;
    
    if(n == 1)
    {
        return 1.0;
    }
    
    if(n % 2 == 0)
    {
        sign = 1;
    }
    else
    {
        sign = -1;
    }
    f = sum(n-1) - (1.0 / n) * sign;
    
    return f;
}

c语言版,滥竽充数一下,呵呵

3 楼

呵呵,以上两位已经解答的你的问题,其实我一个礼拜前也碰到过一摸一样的问题,后来也是发帖子才解决了,原因就是整形数据和整形数据做/(除运算)会丢失精度,而(1.0/n)是浮点型与整形做除运算就不会丢失精度。

4 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

我来回复

您尚未登录,请登录后再回复。点此登录或注册