題目:求1+2+3+…+n
題目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
解題思路:
1.需利用邏輯與的短路特性實現遞歸終止。
2.當n==0時,(n>0)&&((sum+=Sum_Solution(n-1))>0)只執行前面的判斷,爲false,然後直接返回0;
3.當n>0時,執行sum+=Sum_Solution(n-1),實現遞歸計算Sum_Solution(n)。
代碼實現:
public class Solution {
public int Sum_Solution(int n) {
int sum=n;
//sum+=n>0?Sum_Solution(n-1):0;
boolean res=(n>0) &&(sum+=Sum_Solution(n-1))>0;
return sum;
}
}
相同思路的題:無緩存交換
題目描述:
題目描述
請編寫一個函數,函數內不使用任何臨時變量,直接交換兩個數的值。
給定一個int數組AB,其第零個元素和第一個元素爲待交換的值,請返回交換後的數組。
測試樣例:
[1,2]
返回:[2,1]
解題思路:
(1)加法: a=a+b; b=a-b;a=a-b;
(2)異或: a=a異或b;b=a異或b;a=a異或b;
import java.util.*;
public class Exchange {
public int[] exchangeAB(int[] AB) {
// write code here
//加法實現
AB[0]=AB[0]+AB[1];
AB[1]=AB[0]-AB[1];
AB[0]=AB[0]-AB[1];
return AB;
/*
//異或實現
AB[0]=AB[0]^AB[1];
AB[1]=AB[0]^AB[1];
AB[0]=AB[0]^AB[1];
return AB;*/
}
}