定义
定义整数n,如果n小于0,则计算从n到0累加得值,如果n大于0,则计算0到n得累加值
Java递归实现
/**
* 计算0到n之间累加后得值
*
* @param n
* 累加停止的位置
* @return 累加后得值
*/
public int accumulate(int n) {
if (n == 0) {
// 当n等于0的时候停止递归
return 0;
} else if (n < 0) {
// 当n小于0时,每次递归值应该递增
return n + accumulate(n + 1);
} else {
// 当n大于0时,每次递归值应该递减
return n + accumulate(n - 1);
}
}
Java非递归实现
public int accumulateWithoutTraversal(int n) {
int result = 0;
int start = n > 0 ? 0 : n;
int end = n > 0 ? n : 0;
for (; start <= end; start++) {
result = result + start;
}
return result;
}