劍指offer筆試題:另類1+2+3+.......+n

題目要求:求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;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章