剑指Offer JZ47 求1+2+3+...+n C++实现

    科技2022-07-17  109

    题目描述

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

    解题思路


    方法一:短路求值

    1、思路:递归求解1+2+3+...+n,用短路求值的方法代替if条件语句终止递归。短路求值原理:

    expressionA && expressionB,若expressionA为false,则整个表达式为false,不再计算expressionB;expressionA || expressionB,若expressionA为true,则整个表达式为true,不再计算expressionB。

    2、代码:

    class Solution { public: int Sum_Solution(int n) { n > 1 && (n += Sum_Solution(n - 1)); return n; } };

    3、复杂度:

    时间复杂度:O(n);

    空间复杂度:O(n)。

    Processed: 0.009, SQL: 8