剑指offer第四十七题。

题目描述

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

解题思路

这道题目确实不大好想,是一个蛋疼的问题,看了看答案,才知道用&&和递归来实现。对递归熟悉的话,这个程序就非常好理解了。

我的答案

1
2
3
4
5
6
7
8
9
public class Solution {
public int Sum_Solution(int n) {
int sum = n;
//利用&&的短路特性
//n=0的时候,停止递归,否则一直加
boolean flag = (sum>0) && ((sum+=Sum_Solution(--n))>0);
return sum;
}
}