JZ64 求1+2+3+...+n
題目
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷陳述句(A?B:C),
方法 位運算
思路
演算法實作
從1連加到n,不能使用城乘除法,那就只能相加了,一個一個加,但是回圈需要判斷什么時候截止,我們又不能用關鍵詞,這就難辦了,
需要判斷遞回停止的條件,即到0時停止遞回,
不能用if、switch、?:等操作,我們可以采用與運算的短路操作: 在函式中,如果與運算成立,則繼續,否則終止函式直接回傳false,
具體做法:
step 1:用與運算判斷n是否為正數,如果不是則結束遞回,
step 2:如果是累加子問題的和,并回傳n,
代碼
package mid.JZ64;
public class Solution {
/**
* 位運算
* @param n
* @return
*/
public int Sum_Solution(int n) {
boolean flag = (n > 1) && ((n += Sum_Solution(n - 1)) > 0);
return n;
}
public static void main(String[] args) {
System.out.println(new Solution().Sum_Solution(5));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/540874.html
標籤:其他
