我需要用帮助行Taylor实现递归函数指数函数: 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));发布于 2016-02-01 22:34:08
您的代码应该如下所示:
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-01 22:33:25
您的阶乘函数没有大小写。
function fact(n) {
if (n == 1)
return 1;
if (n < 1)
return 0;
return n * fact(n - 1);
}myPow也需要进行类似的更改。虽然能力很有趣,但我认为如果n == 0返回1。
发布于 2016-02-01 22:36:11
这看起来像一个任务,所以我不会调试您的代码,但给您一些提示。
您似乎不明白递归是如何在最后给出结果的。
您必须提供一个简单的情况,在这种情况下,您可以使用非递归调用返回一个值。
有时您不会编写任何if (坏!),有时会有一个if,但这两种情况都使用递归调用。
https://stackoverflow.com/questions/35141658
复制相似问题