| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2105 人关注过本帖
标题:用函数调用的方法求下面公式前30项的和,求大神
只看楼主 加入收藏
wan359505640
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2016-11-30
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:10 
用函数调用的方法求下面公式前30项的和,求大神
e^x=1+x+x^2/2!+x^3/3!+……+x^n/n!
就是e^x的泰勒公式前30项
2016-12-18 19:40
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:1 
#include <stdio.h>
long power(int x, int y);
long factorial(int n);
double e(int x);
void main( )
{
     int x;
     double ex;

     printf("Enter x:");
     scanf("%d", &x);
     ex = e(x);
     printf("\ne^%d=%f", x, ex);
}
long power(int x, int y)         /* 计算xy */
{
      long p = 1;
      int i;

      for (i=1; i<=y; i++)  
             p = p*x;
      return p;
}
long factorial(int n)            /* 计算n! */
{
int i;
long f = 1;

for (i=2; i<=n; i++)   
f = f*i;
    return f;
}
double e(int x)               /* 计算ex */
{
    double result = 1.0, tmp;
    int i = 1;
    if( x>0 )
        do {
            tmp = power(x,i)*1.0/factorial(i++);
            result += tmp;
        } while( i <= 30 ); /* 前30项 */
    return result;
}

Code is my life.
2016-12-18 19:55
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:1 
下午刚问了个问题,现在来回答一个好了,哥哥这代码书写没的说了吧
#include<stdio.h>
#include<math.h>
int main(){
    double function(int n, double x);
    double fact(int n);
    int i;
    double x, result=0;
   
    printf("Enter x:");
    scanf("%lf",&x);
   
    for(i=0; i<30; i++){

        result=result+function(i,x);
    }   
    printf("the sum of the first 30 items is %lf", result);
   
    return 0;
}

 double function(int n, double x){
     double fact(int n);
     double result;
     result=pow(x,n)/fact(n);
     
     return result;
 }
 
 double fact(int n){
     double result=1;
     int i;
     
     for(i=1; i<=n; i++)
         result=result*i;
     
     return result;
 }
2016-12-18 20:16
wan359505640
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2016-11-30
收藏
得分:0 
多谢  多谢各位大哥
2016-12-18 20:53
wan359505640
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2016-11-30
收藏
得分:0 
#include<stdio.h>
double fun(double x)
{   
    if(x==0)  return 1.0;
    else
    {
       int i;
       float m=0.0;
       for(i=1;i<29;i++)
       m+=x/i*fun(x-1);
       return m+1.0;
    }
}
int main()
{
    double x;
    printf("x=");
    scanf("%lf",&x);
    printf("%f",fun(x));
}
求修正
2016-12-18 21:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
话说x^n和n!当n很大例如n=30时不会数据溢出吗???感觉分子分母要分别运算,(x/n)*(x/n+1)*(x/n+2)*(x/n+3)……感觉应该要这样算~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 22:07
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:3 
回复 5楼 wan359505640
#include<stdio.h>
double fun(double x,int i)
{   
    double m=1.0;

    if(x==0)
        return 1.0;

    if (i<31)
      m+=x/i*fun(x,i+1);

       return m;
}
int main()
{
    double x;
    printf("x=");
    scanf("%lf",&x);
    printf("%f",fun(x,1));
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 22:27
xiajingran
Rank: 2
等 级:论坛游民
帖 子:32
专家分:28
注 册:2016-12-14
收藏
得分:0 
。。。。。。。

小程序大智慧
2016-12-19 11:27
wan359505640
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2016-11-30
收藏
得分:0 
膜7楼
2016-12-19 16:44
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 6楼 九转星河
定义成double类型的话应该不会溢出的
2016-12-19 18:31
快速回复:用函数调用的方法求下面公式前30项的和,求大神
数据加载中...
 
   



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

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