JavaScript 返回 NaN 的递归函数
JavaScript recursive function returning NaN
JavaScript 函数 nuovaX
下面 returns NaN
如果它被调用为 s!=0
。我怎样才能摆脱这个?
function d(s,di,dd){
var ris=di*Math.pow(dd,s);
return ris;
}
function nuovaX(s,di,dd,angolo,xi){
var x=0;
if(s==0){
x=xi;
}
else{
x=nuovaX(s-1,di,dd,angolo)+d(s,di,dd)*Math.cos(s*angolo);
}
return x;
}
此处缺失xi
:
x=nuovaX(s-1,di,dd,angolo)+d(s,di,dd)*Math.cos(s*angolo);
/\
/\
所以在第二次迭代中 xi
是 undefined
。
稍微简化一下:
function d(s, di, dd){
return di * Math.pow(dd, s);
}
function nuovaX(s, di, dd, angolo, xi){
if(s==0) return xi;
return nuovaX(s-1, di, dd, angolo) + d(s, di, dd) * Math.cos(s * angolo);
}
nuovaX
需要 5 个参数,但其对自身的递归调用仅接收 4 个参数 - 缺少 xi
.
JavaScript 函数 nuovaX
下面 returns NaN
如果它被调用为 s!=0
。我怎样才能摆脱这个?
function d(s,di,dd){
var ris=di*Math.pow(dd,s);
return ris;
}
function nuovaX(s,di,dd,angolo,xi){
var x=0;
if(s==0){
x=xi;
}
else{
x=nuovaX(s-1,di,dd,angolo)+d(s,di,dd)*Math.cos(s*angolo);
}
return x;
}
此处缺失xi
:
x=nuovaX(s-1,di,dd,angolo)+d(s,di,dd)*Math.cos(s*angolo);
/\
/\
所以在第二次迭代中 xi
是 undefined
。
稍微简化一下:
function d(s, di, dd){
return di * Math.pow(dd, s);
}
function nuovaX(s, di, dd, angolo, xi){
if(s==0) return xi;
return nuovaX(s-1, di, dd, angolo) + d(s, di, dd) * Math.cos(s * angolo);
}
nuovaX
需要 5 个参数,但其对自身的递归调用仅接收 4 个参数 - 缺少 xi
.