求1+2+3+...+n

题目描述

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
 
来自牛客网  快速通道
 
表示头大,看到了一个清奇的代码。
 
class Solution {
public:
    int Sum_Solution(int n) {
        int ans = n;
        ans && (ans += Sum_Solution(n - 1));
        return ans;
    }
};

运用的原理是 短路求值

其中 &&和||,都不陌生,在代码里的意思也一样,&&两部分都得判断为真才能继续执行下面的。||第一个正确就不需要判断第二个

附上另外的代码一份

class Solution {
public:
    int Sum_Solution(int n) {
        sum = sum + n;
        if(n>1)
            Sum_Solution(n - 1);
        return sum;
    }
    int sum=0;
};
原文地址:https://www.cnblogs.com/yoriko/p/12253484.html