【问题标题】:Computing e^x using recursion and taylor series使用递归和泰勒级数计算 e^x
【发布时间】:2014-03-27 01:46:17
【问题描述】:

所以我需要使用泰勒级数的因式形式递归计算 e^x:

方程:e^x = 1 +x + (x^2)/2! + ... + ((x^n)/n!))

因式:e^x = 1 + x (1+x/2*(1+x/3*(...(1+x/n))))

在下面的函数定义中,“x”是幂,“n”是估计 e^x 的总项数。如果有人能指出我正确的方向,我会更喜欢。我尝试了许多不同的方法,包括使用分解方程最内项的基本情况,但无济于事。

static double eThree(double x, long n) {
   //this is what i tried
   if(n==0){
        return 1 +x/n;
    }else{
        double a= (1+(x/n)) * (eThree(x,n-1));
        System.out.println(a);
        return a;
    }


}

我已经意识到'n'应该像我尝试的那样增加而不是减少,但是,对函数的原始调用在变量'n'中具有迭代总数,并且无法跟踪总数在所有递归调用中的迭代次数。

(1 +(x/n))中每一项除数的值,其中n是除数,每次都应该加1,并且在最后一次迭代中等于总迭代次数。

【问题讨论】:

  • 这里的情况通常如此——请展示您尝试过的内容。

标签: java recursion taylor-series


【解决方案1】:

由于该方法是静态的,因此您实际上可以在第一次调用时将其存储在静态变量中。你需要抛出一个 if 语句来检查它是否也是第一次迭代。我稍后会添加代码,但现在没有时间。

或者您可以跟踪变量中的迭代次数。委托给另一个“真正的”递归方法,并传递不同的参数。

各种不同的可能解决方案。

你可以把它变成一个循环,但这可能不会给你的主管留下深刻印象。

【讨论】:

    猜你喜欢
    • 2016-01-24
    • 2020-03-01
    • 1970-01-01
    • 2014-05-28
    • 2017-12-10
    • 2015-05-15
    • 1970-01-01
    • 2021-12-26
    • 2017-03-20
    相关资源
    最近更新 更多