我在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));
答案 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);