求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)
};
   

转载:https://leetcode-cn.com/problems/qiu-12n-lcof/

原文地址:https://www.cnblogs.com/panjingshuang/p/13069084.html