刚刚在做笔试题的时候碰到了这个问题,这里做个记录。
下面是题目的大致描述:
要求:计算1+2+…+n
条件:
- 不能使用乘除操作符
- 不能使用while,for等循环控制语句
- 不能使用if,else,三目运算符等条件控制语句
一种(符合该题目给定的格式的)解法是:
public int add(int n){
int sum=0;
boolean flag = false;
//begin code
// 这里使用&&来达到短路的效果,这样在n==0时,后半部分被短路,从而使得跳出递归,此时正好加到从n加到0
// 后半部分的比较操作纯粹是为了满足Java语法,没有实际含义
flag = (n != 0) && (sum = add(n-1) + n)==1;
return sum;
//end code
}