題目詳情
求 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;
}
};
結果