cjykzy2_4 2022-11-09 00:19 采纳率: 50%
浏览 34

C++运用递归方法求函数

没有什么思路,不知道该怎么运用他给的条件,希望大家能给一下完整的过程讲解😂😂,谢谢😍

img

  • 写回答

2条回答 默认 最新

  • qybao 2022-11-09 04:30
    关注

    一般这种精确到小数点后几位,就是说最后一项x^n/n!满足小于该小数时就可以结束递归了,即满足x^n/n!<0.000001结束递归

    
    思路:
    观察每一项特征
    x0=1=x^0/0!
    x1=x=x^1/1!=x0*x/1
    x2=x^2/2!=x1*x/2;
    ...
    xn=x^n/n!=(xn-1)*x/n
    也就是后一项=前一项乘以x再除以当前的n
    所以,设当前项为xk=x^k/k!
    则函数可定义为
    double exn(double x, int n, double xk) {
        double xkk=xk*x/n; //算出后一项
        if(xkk<0.000001)
            return xk; //如果后一项小于精度则舍去,返回当前项
        return xk + exn(x, n+1, xkk); //否则返回当前项+递归后一项以后的总和
    }
    
    //测试
    int main(){
        double x=0.5;
        double s = exn(x, 1, 1);//第三个参数1就是当前项第一项
        printf("%.6f\n", s); //打印结果
        printf("%.6f\n", exp(x)); //和系统函数对比
        return 0;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月9日