定義
定義整數(shù)n礁阁,如果n小于0鹉动,則計(jì)算從n到0累加得值摹闽,如果n大于0,則計(jì)算0到n得累加值
Java遞歸實(shí)現(xiàn)
/**
* 計(jì)算0到n之間累加后得值
*
* @param n
* 累加停止的位置
* @return 累加后得值
*/
public int accumulate(int n) {
if (n == 0) {
// 當(dāng)n等于0的時(shí)候停止遞歸
return 0;
} else if (n < 0) {
// 當(dāng)n小于0時(shí)根盒,每次遞歸值應(yīng)該遞增
return n + accumulate(n + 1);
} else {
// 當(dāng)n大于0時(shí)钳幅,每次遞歸值應(yīng)該遞減
return n + accumulate(n - 1);
}
}
Java非遞歸實(shí)現(xiàn)
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;
}