题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
实现如下:
package cn.yzx.nowcoder;
/**
* 题目描述
* 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
* F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
* 特别指出:第0项是0,第1项是第一个1。
* @author Administrator
*
*/
public class Fibonacci {
public static void main(String[] args) {
int n=20;
int res = new Fibonacci().Fibonacci(n);
System.out.println(res);
}
//递归实现,在牛客网上OJ不过
public int Fibonacci2(int n) {
if(n == 0)
return 0;
else if(n == 1)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
//用非递归
public int Fibonacci(int n) {
int pre = 1;
int prePre = 1;
int res = 0;
if(n == 0)
return 0;
else if(n == 1 || n == 2)
return 1;
else{
for(int i=3;i<=n;i++){
res = pre + prePre;
prePre = pre;
pre = res;
}
return res;
}
}
//动态规划实现
public int Fibonacci1(int n) {
int f = 0, g = 1;
while(n-- >0) {
g += f;
f = g - f;
}
return f;
}
}