返回NaN的JavaScript递归函数

时间:2015-11-27 17:57:43

标签: javascript function recursion nan

如果nuovaX调用了NaN,则下面的JavaScript函数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; } 。我怎么能摆脱这个?

{{1}}

2 个答案:

答案 0 :(得分:2)

稍微简化一下:

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

答案 1 :(得分:1)

此处缺少xi

x=nuovaX(s-1,di,dd,angolo)+d(s,di,dd)*Math.cos(s*angolo);
                        /\
                        /\

所以第二次迭代xiundefined