斐波那契(Fibonacci)数列背景:斐波那契数列 (维基,自备梯子!)
这个问题不论是递归还是非递归都很容易实现,本文仅java实现。
递归实现
/**
* @param n 需要获取的数值在数列中的序号,从0开始
* @return
*/
private static int getFibonacci(int n) {
if (n < 0) throw new IllegalArgumentException("parameter n must be zero or positive");
if (n == 0 || n == 1) return n;
return getFibonacci(n - 1) + getFibonacci(n - 2);
}
非递归实现
private static int getFibonacci(int n) {
if (n < 0) throw new IllegalArgumentException("parameter n must be zero or positive");
if (n == 0 || n == 1) return n;
int first = 0, second = 1, tmp = 0;
int i = 2;
while(i < n) {
tmp = second;
second = first + second;
first = tmp;
i++;
}
return first + second;
}