题目:
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路:
最先想到等差数列求和公式,sum = a1n+n(n-1)d/2=n+n(n-1)/2,但是用到了乘法。想到用递归:sum=n+Sum_Solution(n-1),递归的结束条件是n=0,不能用if判断,&&是短路与运算,之所以称为短路与,是因为如果&&左边的表达式为false,右边的表达式就不再计算,直接判断整个表达式为false。
代码:
public class Solution {
public int Sum_Solution(int n) {
int sum = 0;
boolean b = (n > 0) && ((sum = n+Sum_Solution(n-1))>0);
return sum;
}
}