题目描述
求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; };