【劍指Offer】面試題46:求1+2+3+...+n

一:題目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

二:解題思路
不能用上面提到的運算,還可以使用+ -,位運算符

該題的思路應該用循環或循環
使用循環的話,因爲不能用for while ,此路不通
如果用遞歸的方式,終止條件如何判斷終止條件--邏輯與的短路性質
A&&B:A爲真,判斷B是否爲真
            A爲假,不判斷B
如果A是我們的判斷條件,B是我們遞歸的函數,當A滿足條件時,執行B,當A不滿足條件時,終止遞歸
A:(n>0)
B:sum+=Sum_Solution(b-1)>0

三:代碼實現
class Solution {
public:
    
    int Sum_Solution(int n) {
        
        int sum=n;
        bool ans=(n>0)&&(sum+=Sum_Solution(n-1));
        return sum;
    }
};


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