结果为什么alert是12,怎么理解?
function lj(n){
if (n == 3){
return n;
} else {
return n+lj(n-1);
}
}
var a = lj(5);
alert(a);
传入5走进else 变成 5+lj(4)
然后 变成了 传入4走进else 变成 5+4+lj(3)
lj(3)=3
所以是 5+4+3 =12
5+ lj(4)=4+lj(3)=3 ==== 5 + 4 + 3 = 12
这是一个递归调用。
递归函数的定义如下:
当n=3时,f(3)=3
当n>3时,f(n)=n+f(n-1)
另外这个代码还需要做一些限制,n < 3这个递归就会一致循环到报错。所以需要对传入的n的大小进行限制。