递归函数指数函数



我需要用帮助行实现递归函数指数函数(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));

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

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

myPow 需要类似的更改。虽然由于幂很有趣,但我认为如果 n == 0 返回 1。

您的代码应如下所示:

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));

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

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

您必须提供一个简单的情况,其中使用非递归调用返回值。

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

这将解决您的问题:

function fact(n) {
  if (n == 1) return 1;
  return n * fact(n - 1);
}
function myPow(x, n) {
  if (n == 0) return 1;
  return x * myPow(x, n - 1);
}
function expon(x, n) {
  if (n == 0) return 1;
  return expon(x, n - 1) + myPow(x, n) / fact(n);
}
console.log(expon(1, 10));

最新更新