题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项
分析:
斐波那契数列从第3项开始,每一项都等于前两项之和。
例子:数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597...
斐波那契数列的标准公式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
根据公式可以直接写出:
递归
public int Fibonacci(int n) {
if (n <= 1) {
return n;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
如果n过大,递归调用过多可能导致栈溢出
换成for循环
public int Fibonacci(int n) {
int preNum = 1;
int nextNum = 0;
int result = 0;
if (n <= 1) {
return n;
}
for (int i = 2; i <= n; i++) {
result = preNum + nextNum;
nextNum = preNum;
preNum = result;
}
return result;
}
public static void main(String[] args) {
System.out.println(" n = " + Fibonacci(10));
}