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

题目描述

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

1.这道题目比较有意思,不能使用循环,判断语句。
2.从方法上进行判断,那么有循环和递归,而题目要求不能使用循环,那么可以从递归方面入手。
3.递归需要一个终止条件,而这个终止条件使用了if判断语句,那么我们有没有别的方式不适用if语句判断呢?
4.当然是有的,我们可以使用利用&&符号,如果左边为假,那么右边就不再进行判断。

AC代码如下:

class Solution {
public:
    int Sum_Solution(int n) {
        int sum = n;
        //当sum为0时,不会执行后半个处理
        sum && (sum += Sum_Solution(n - 1));
        return sum;
    } 
};

发表评论

电子邮件地址不会被公开。 必填项已用*标注