- 求 1+2+3+...+n
正常的帶if的實現是這樣
public static int sumSolu(int n){
if(n<=0) return 0;
int sum=n;
sum+=sumSolu(n-1);
return sum;
}
一旦不需要if按厘,就要利用&&的特點,第一個條件語句為 false 的情況下不會去執(zhí)行第二個條件語句
public int Sum_Solution(int n) {
int sum = n;
boolean b = (n > 0) && ((sum += Sum_Solution(n - 1)) > 0);
return sum;
}
- 不用加減乘除做加法
a ^ b 表示沒有考慮進位的情況下兩數的和绑青,(a & b) << 1 就是進位瞻佛。
遞歸會終止的原因是 (a & b) << 1 最右邊會多一個 0咖熟,那么繼續(xù)遞歸,進位最右邊的 0 會慢慢增多击纬,最后進位會變?yōu)?0,遞歸終止
public int Add(int num1, int num2) {
return num2 == 0 ? num1 : Add(num1 ^ num2, (num1 & num2) << 1);
}
下一步钾麸,每天復習一個舊的更振,學習一個新的leetcode,