具有唯一正方形的NaN结果

时间:2015-02-10 22:48:52

标签: javascript nan

我在Javascript中编写一个函数,它会接收一个数字,然后返回一个边长很多的正方形中有多少个正方形。例如,通过1会给你一个,2会给你5,3会给你14等等。问题是,我得到了Nan的结果。我不知道除了一个数字之外它还会得到什么。

function a (n)
{
if (n > 0)
{
    var total = n*n;
    total += a(n-1);
    return (total);
}
}
document.write(a(10));

3 个答案:

答案 0 :(得分:3)

  

我不知道除了一个号码之外它还会得到什么。

您的基本案例缺失,它会返回undefined。尝试

function a(n) {
    if (n > 0)
        return n*n + a(n-1);
    else
        return 0;
}

答案 1 :(得分:1)

这是因为if (n > 0)当这不是真的时,你的函数会返回void。所以在你的其他地方返回0

function a (n)
{
    if (n > 0)
    {
        var total = n*n;
        total += a(n-1);
        return total;
    }
    else
    {
        return 0;
    }
}
console.log(a(10));

答案 2 :(得分:0)

你已经有两个很好的答案了。我只是想让你意识到以更多面向对象的风格写作。如果事情变得更复杂,那么将变量和函数组合在一起更容易,并使它们远离所有其他东西。我会写这样的东西来保持它有条理:

var a = {

    total: 0,

    sides: function (n) {

        if (n > 0) {
            this.total = n * n;
            this.total += this.sides(n - 1);
            return this.total;
        } else {
            return 0
        }

    }

}

a.sides(5);
alert(a.total);