- 使用等差数列求和方式
/**
* 等差数列求和
* 例如 1到50
*
* @param n
* @return
*/
private static int getNumber(int n) {
// 最小值 min
int min = 1;
// 等差
int d = 1;
// 最大值
int max = min + (n - 1) * d;
// 等差数列公式 Sn=n*(a1+an)/2
return n * (min + max) / 2;
}
- 使用斐波那契方式
/**
* 通过斐波那契求和
*
* @param n
* @return
*/
private static int getNumberByFibonacci(int n) {
if (n <= 0) return 0;
return n + getNumberByFibonacci(n - 1);
}