求1+2+…+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
重点是不能使用以上提及的关键字来进行循环相加
1.想不出合适的办法只能是使用关键字if来进行,当前这并不符合要求
/**
* @param {number} n
* @return {number}
*/
var sumNums = function(n) {
if(n == 1) {
return 1
}
// arguments.callee指向的就是当前函数自己本身
return n + arguments.callee(n-1)
};
2.合适的代码,利用&&
想与的惰性原则来进行循环,当前半部分之后不符合要求之后就不会再对后面的公式进行运算
/**
* @param {number} n
* @return {number}
*/
var sumNums = function(n) {
return n && ( arguments.callee(n-1) + n)
};