面試題64. 求1+2+…+n(C++)

題目詳情 

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

 

示例 1:
輸入:
n = 3
輸出: 6


示例 2:
輸入:
n = 9
輸出: 45

 

限制:

  • 1 <= n <= 10000


——題目難度:中等


 




這道題如果使用遞歸法的話,其實就是最後一步當n=1或n=0的時候會有問題,因爲不能使用條件判斷語句,所以我們得 想方設法來解決n=1或n=0時返回1或0。

這時候就可以充分利用&&(邏輯與)的性質。
表達式1&&表達式2 
1.當表達式1爲假時,表達式2不會被執行,返回的就是false
2.當表達式1爲真時,表達式2會被執行,返回的就是表達式2的bool值(真或假)

這樣就可以使用&&的這個性質對n=0的情況做出正確的處理。

-下面代碼

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

結果

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