| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6174 人关注过本帖
标题:x-x^2/2!+x^3/3!+~~~~+(-1)^(n-1)*x^n/n! 怎么用c语言些,注意阶乘!
只看楼主 加入收藏
哈哈小武
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-3-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:15 
x-x^2/2!+x^3/3!+~~~~+(-1)^(n-1)*x^n/n! 怎么用c语言些,注意阶乘!
自己现在刚开始学c,导师留的这道题!确实写不出来,百度了好多也没有个答案,求大神指点!
最好程序后面有注解,能用初级的写就用初级的写!
谢谢各位了!
下面是百度上的一个有问题的程序,有人说是n的问题??
#include<stdio.h>
#include<math.h>
int fact(int j){
 int m,n;
 for(j=1;j<=n;j++)
 if(j==1) return 1;
  else m=j*fact(j-1);
  return m;
}
double mypow(double x,double n){

 double b=1,a,c;
 a=pow((-1),(n-1));
 b=b*x;
 c=a*b;
 return c;
}
int j,n,x,g; double s,h;
void main()
{
 
 printf("input n,x\n");
 scanf("%d%d",&n,&x);
 s=mypow(x,n);
 g=fact(n);
 h=s/g;
 printf("s=%d",g);
}
搜索更多相关主题的帖子: include double return 
2013-03-29 20:41
mskeheng
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:179
注 册:2013-3-13
收藏
得分:2 
这个的话,如果数据大一点就会发生溢出吧,还有这个只是算了第n项的值,没有得出整个表达地的值啊
2013-03-29 20:50
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:0 
刚刚看错了 容我想想……


[ 本帖最后由 yctchxf 于 2013-3-29 23:32 编辑 ]
2013-03-29 23:28
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:2 
你导师给你留题目不是让你这么问的,自己多想想,人不逼自己永远不会知道自己能做什么。
2013-03-30 00:36
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:10 
#include<stdio.h>
long int fac(int);   //递归函数,用来求n的阶乘
main()
{
    double sum=0,d;
    int i,j,n,x,a,b,c;
    printf("input n and x:");
    scanf("%d%d",&n,&x);
    for(i=1;i<=n;i++)
    {
        a=1;
        b=1;
        for(j=1;j<i;j++)    //用来求(-1)的(n-1)次方
            a=a*(-1);
        for(j=0;j<i;j++)    //用来求 x 的 n 次方
            b=b*x;
   
        c=fac(i);           // n 的阶乘
        d=(double)(a*b)/c;  //一个项,(double)是用来强制转换类型的
        sum+=d;             //求和
    }
    printf("answer:%.2lf\n",sum);
    return 0;
}
long int fac(int s)      //函数的定义
{
    if(s<=1)
        return 1;
    else
        return s*fac(s-1);
}




三十年河东,三十年河西,莫欺少年穷!
2013-03-30 02:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:3 
浮点数不是实数,若n很大,那结果就会偏差得厉害,但好在你这个公式是收敛的

以下代码使用标准C语法写成,在gcc4.7.2(加编译参数-std=c99)中编译测试通过
程序代码:
#include <stdio.h>

// x/1 - x/1*x/2 + x/1*x/2*x/3 - ……
long double foo( long double x, unsigned n )
{
    long double result = 0.0;
    long double single = -1;
    for( unsigned i=1; i<=n; ++i )
    {
        single *= -x/i;
        result += single;
    }

    return result;
}

int main(void)
{
    printf( "%Lf\n", foo(1.0,1) );
    printf( "%Lf\n", foo(1.0,2) );
    printf( "%Lf\n", foo(1.0,3) );

    printf( "%Lf\n", foo(1.0,20) );

    return 0;
}

2013-03-30 08:46
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:3 
#include<iostream>

using namespace std;
float f(float x,int n)
{
    if(n==1) return x;
    return f( x, n-1)*(-1)*x/n;//用乘-1*X的方法得项的正负值
}

float fsum(float x,int n)
{
    if(n==1) return x;   
    return fsum( x,n-1)+f( x, n);
}

int main()
{
    cout<<     fsum(6,9)<<endl;

    return 0;
}

www.qunxingw.wang
2013-03-30 13:05
哈哈小武
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-3-29
收藏
得分:0 
回复 2楼 mskeheng
谢谢指点!小弟会努力的
2013-03-30 23:25
哈哈小武
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-3-29
收藏
得分:0 
回复 3楼 yctchxf
恩恩!麻烦了
2013-03-30 23:26
哈哈小武
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-3-29
收藏
得分:0 
回复 4楼 shmilyflf
这道题小弟写了两天了,真是没有思路
2013-03-30 23:28
快速回复:x-x^2/2!+x^3/3!+~~~~+(-1)^(n-1)*x^n/n! 怎么用c语言些,注意阶乘! ...
数据加载中...
 
   



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

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