0

我需要在 Taylor 行的帮助下实现递归函数指数函数 (e^x):e^x = 1 + x + x2/2!+ x3/3!+ ...但我不明白我做错了什么我有下一个代码:

function fact(n){
    return n * fact(n - 1);
}

function myPow(x, n){
    return x * myPow(x, n - 1);
}

function expon(x ,n){
    if(n == 1){
        return expon(x, n - 1) * x;
    }
    else{
        return expon(x, n - 1) + (myPow(x, n)/fact(n));
    }

}

console.log(expon(1, 10));
4

3 回答 3

1

您的阶乘函数没有基本情况。

function fact(n) {
  if (n == 1)
    return 1;
  if (n < 1)
    return 0;
  return n * fact(n - 1);
}

将需要对myPow. 虽然由于权力很有趣,但我认为如果 n == 0 返回 1。

于 2016-02-01T22:33:25.680 回答
0

您的代码应如下所示:

function fact(n){
  if (n == 1)
    return 1;
  return n * fact(n - 1);
}

function myPow(x, n){
  if(n == 1)
    return n;
  return x * myPow(x, n - 1);
}

function expon(x ,n){
  if(n == 1){
    return 1;
  }
  else{
    return expon(x, n - 1) + (myPow(x, n)/fact(n));
  }

console.log(expon(1, 10));
于 2016-02-01T22:34:08.833 回答
0

这看起来像一个作业,所以我不会调试你的代码,但会给你一些提示。

您似乎不明白递归如何以最终给出结果而结束。

您必须提供一个简单的案例,您可以通过非递归调用返回一个值。

有时你不写任何if(糟糕!),有时有一个if,但两种情况都使用递归调用。

于 2016-02-01T22:36:11.093 回答