做了個劍指Offer的題目目錄,鏈接如下:
https://blog.csdn.net/mengmengdastyle/article/details/80317246
一、題目
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
二、解法
難點:不能使用乘除、for、while、if、else、switch、case等關鍵字以及條件判斷的語句(A?B:C)
解法:通過遞歸的方式進行計算。
但是很疑問的地方在於如何結束遞歸。這裏可以有多種的方式,基本方向是採用邏輯與或的方式來計算,與的時候通過n>0來短路,這樣在n=0的時候不需要計算遞歸的值,或的時候通過n==0來短路,在n=0的時候可以短路邏輯或運算。
三、代碼
public int Sum_Solution(int n) {
int sum = n;
boolean b = (n == 0) || (sum += Sum_Solution(n-1)) > 0;
return sum;
}