题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
【解决】
①
public class Solution {
public static void main(String[] args){
System.out.println(Sum_Solution(3));
}
public static int Sum_Solution(int n) {
int sum = 1;
for (int i = 2;i <= n;i ++){
sum = getSum(sum,i);
}
return sum;
}
public static int getSum(int x,int y){
if (x == 0) return y;
if (y == 0) return x;
int sum = x ^ y;
int carry = (x & y) << 1;
return getSum(sum,carry);
}
}
② 不使用各种循环,判断等条件。
public class Solution {
public static void main(String[] args){
System.out.print(Sum_Solution(5));
}
public static int Sum_Solution(int n) {
int sum = n;
boolean tmp = (n > 0) && ((sum += Sum_Solution(n - 1)) > 0);//递归得到结果
return sum;
}
}