题目要求:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
解题思路:
针对1+2+3+...+n我们有如下若干方法
方法一:公式求和;高中数学中我们知道这是公差为1的等差数列求和,我们只需要带入等差数列前n项和公式n(n-1)/2,但是主要解题用了乘除法所以不可以
方法二:循环求和;通过循环来实现求和,但题目要求不能使用循环。所以这种办法也不行。
方法三:递归调用;递归调用有一个很主要的因素就是规定临界值,判断临界值就需要用到if语句判断。所以也不行。
那么改如何解决呢?
因为方法一和方法二直接被题目要求给否决了,但是方法三只是否决了判断 的那个部分,我们可不可以用另一种方法来体现if()else()结构呢?那说到底不就是个判断语句,逻辑运算符“&&”不就可以起到判断作用。
代码如下
class Solution {
public:
int Sum_Solution(int n) {
int sum=n;
sum && (sum+=Sum_Solution(n-1));
return sum;
}
};