题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
解析:
①1+2+3+…+n的算法中公式法包含乘除法,递归法中的递归结束语句包含if条件语句;
②这里考虑能否替换if条件,递归结束语句为
if (n==0)
return n;
③我们知道&&运算为短路操作符,当前面表达式为假,&&后面的表达式不再执行,所以将n>0作为&&的前面表达式。
public int Sum_Solution(int n) {
int num = n;
//短路规则,当num=0时,后面的不再执行,直接返回num,与if(n==0)直接返回n一样
boolean s = (num>0)&&((num+=Sum_Solution(n-1))>0);
return num;
}