求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
public class Solution {
public int Sum_Solution(int n) {
// if(n==1) return 1;
// else return n+Sum_Solution(n-1);
int ans =n;
boolean t= ans&&(ans += Sum_Solution(n - 1));
return ans;
}
}
/*
* 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case
* 等关键字及条件判断语句(A?B:C)。
* 思路:等差数列求和公式:n*(n+1)/2=(n^2+n)/2,由于不能用除法,因此可以右移一位表示除以2
*/
public class Sum_Solution {
public int sum_Solution(int n) {
return (int)(Math.pow(n, 2) + n) >> 1;
}
public static void main(String[] args) {
System.out.println(new Sum_Solution().sum_Solution(100));
}
}