剑指 Offer 64. 求1+2+…+n

题目描述:

求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

示例:

输入: n = 3
输出: 6

输入: n = 9
输出: 45

思路:

因为不能用for、if等来判断边界,所以可以通过右移运算,

代码:

1
2
3
4
5
6
7
var sumNums = function(n) {
// return n && sumNums(n-1) + n;

//右移几位就相当于除以2的几次方(如100>>4 等效 100/2^4)
//负数的右移不等于除法
return (n ** 2 + n) >> 1 ;
};