leetcode.64 骚操作求和

面试题64. 求1+2+…+n

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

 

示例 1:

输入: n = 3
输出: 6

示例 2:

输入: n = 9
输出: 45

 

限制:

  • 1 <= n <= 10000

这道题更多的像是个脑筋急转弯

不能用求和公式,不能balabala,

。。。。。能想到的都不让用

那咋整

 

  1. for用递归实现,这很好理解

  2. if用逻辑运算符的计算特性来解决。即and的短路特性。

    A and function() 如果A是True,function()会运行,如果A为false,直接终止,后面的就不看了

#include <iostream>

using namespace std;

int sumNums(int n) {
    n && (n += sumNums(n - 1));
    return n;

}

int main(){
	int n = 10;
	cout << sumNums(n) << endl;
}

啦啦啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章