題目描述
求 1+2+...+n ,要求不能使用乘除法击纬、for鼎姐、while、if更振、else炕桨、switch、case等關(guān)鍵字及條件判斷語句(A?B:C)肯腕。
示例 1:
輸入: n = 3
輸出: 6
示例 2:
輸入: n = 9
輸出: 45
限制:
1 <= n <= 10000
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/qiu-12n-lcof
解題思路
由于題目限制不能使用乘除及一些關(guān)鍵字献宫,可以考慮使用比較貼近硬件操作的位操作和邏輯運算,利用邏輯運算與的‘短路效應(yīng)’实撒,可以實現(xiàn)遞歸的終止姊途。
代碼
int sumNums(int n){
n && (n += sumNums(n - 1));
return n;
}
測試代碼及結(jié)果
int main()
{
printf("%d\n", sumNums(5));
printf("%d\n", sumNums(0));
printf("%d\n", sumNums(1));
return 0;
}
執(zhí)行結(jié)果
時間復(fù)雜度:O(n),空間復(fù)雜度:O(n)知态。